如果对象的其他数组中存在值,则替换数组的值

问题描述

我正在尝试进行数组操作 基本上,我有两个动态生成的数组,可以是任意长度。

let arr1 =['test','XDDD','test new']
let arr2 = [{value: 'test',error : 'error'},{value: 'test new',error: 'invalid'}]

我检查arr2中是否存在arr1对象属性值,如果是,则替换索引处的arr1值。例如,测试位于索引0,然后像测试[错误]一样替换它,即arr2.value + arr2.error。同样,"test new"应该在同一索引处替换为"test new [invalid]"

最终输出['test [error]','test new [invalid]']

解决方法

arr1.map(el => {
  const error = arr2.find(a => a.value === el);
  return error ? `${error.value} [${error.error}]` : el;
});
,

您可以使用forEach(修改arr1)或map(如果需要新数组)来完成此操作。

arr2.forEach(item => { 
    const idx = arr1.findIndex(e => e === item.value);
    if (idx >= 0) {
        arr1[idx] = `${arr1[idx]} [${item.error}]`;
    }
})

https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/forEach

const newArr = arr1.map(item => {
    const err = arr2.find(a => a.value === item);
    return err ? `${item} [${err.error}]` : item;
});

https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/map