js数组的findIndex方法用途

需求:替换datas数组中的对象:规则:保持datas长度不变,dataId不为“自动id”的值不变,dataId为“自动id”的数据为datasOld中的对象,前提该对象不包含在datas中。

定义和用法
findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。
findIndex() 方法为数组中的每个元素都调用一次函数执行:
当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 -1
注意: findIndex() 对于空数组,函数是不会执行的。
注意: findIndex() 并没有改变数组的原始值。

用findIndex方法:

待处理的数据如下:

   datas=[
      {isEffective: true, dataId: "1"},
      {isEffective: true, dataId: "2",},
      {isEffective: true, dataId: "自动id"},
      {isEffective: true, dataId: "自动id",},
      {isEffective: true, dataId: "3"},
      {isEffective: true, dataId: "自动id"},
	]
	
 datasOld=[
    {isEffective: true, dataId: "1"},
    {isEffective: true, dataId: "6"},
    {isEffective: true, dataId: "7"}              
  ]

最终结果就是:

datas=[
              {isEffective: true, dataId: "1"},
              {isEffective: true, dataId: "2",},
              {isEffective: true, dataId: "6"},
              {isEffective: true, dataId: "7"},
              {isEffective: true, dataId: "3"},
              {isEffective: true, dataId: "自动id"},
            ]

处理逻辑


   datasOld.forEach(m=>{
                let index = datas.findIndex(k=>k.dataId==m.dataId);
                if (index==-1) {
                   let ind = datas.findIndex(h=>h.dataId=='自动补齐的id');
                   if (ind>-1) {
                    datas[ind] = m;
                   }
                }
            })

你可能感兴趣的:(javascript,前端,开发语言)