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;
});