Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果值存在于对象的其他数组中,则替换数组的值_Javascript_Lodash - Fatal编程技术网

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

Javascript 如果值存在于对象的其他数组中,则替换数组的值,javascript,lodash,Javascript,Lodash,我正在尝试做数组操作 基本上我有两个动态生成的数组,可以是任意长度的 让arr1=['test','XDDD','testnew'] 让arr2=[{value:'test',error:'error'},{value:'test new',error:'invalid'}] 我已检查arr2对象属性值是否存在于arr1中,如果存在,则替换索引处的arr1值。对于eg测试,其索引为0,然后将其替换为测试[error],即arr2.value+arr2.error。同样地,“test new”应

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

让arr1=['test','XDDD','testnew']
让arr2=[{value:'test',error:'error'},{value:'test new',error:'invalid'}]
我已检查
arr2
对象属性值是否存在于
arr1
中,如果存在,则替换索引处的
arr1
值。对于eg测试,其索引为
0
,然后将其替换为测试[error],即
arr2.value+arr2.error
。同样地,
“test new”
应在同一索引处替换为
“test new[无效]”


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

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

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


虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。
arr2.forEach(item => { 
    const idx = arr1.findIndex(e => e === item.value);
    if (idx >= 0) {
        arr1[idx] = `${arr1[idx]} [${item.error}]`;
    }
})
const newArr = arr1.map(item => {
    const err = arr2.find(a => a.value === item);
    return err ? `${item} [${err.error}]` : item;
});