我正在尝试比较两个对象数组,比较后我需要执行一些条件,如项目id是否在两个数组中匹配。
在此之后,我不需要返回任何东西,如果它是假的,我需要返回一些值。
我试图通过使用foreach来实现这一点,使用foreach的原因是我需要应用条件,我需要返回一些东西。
我需要检查两个数组中的每个值以应用条件。
我尝试了一些map方法,但是有些返回了一个布尔值,我无法使用它来应用条件。我使用foreach得到了部分输出,但是循环第二个数组返回了undefined。
我需要比较这两个数组,我需要找到ID相同的元素,对于这些元素,我需要返回null,对于ID不同的元素,我需要返回一些值,因此我需要比较对象数组中的每个元素,并且需要应用条件
有没有人能让我知道我错过了什么?提前感谢!
var result1 = [
{id:1, name:'Sandra', type:'user', username:'sandra'},
{id:2, name:'John', type:'admin', username:'johnny2'},
{id:3, name:'Peter', type:'user', username:'pete'},
{id:4, name:'Bobby', type:'user', username:'be_bob'}
];
var result2 = [
{id:2, name:'John', email:'johnny@example.com'},
{id:4, name:'Bobby', email:'bobby@example.com'}
];
result1.forEach((num1, index) => {
// console.log(num1.id) //result coming as expected
const num2 = result2[index];
console.log("num2", num2.id)
// console.log(num1.id, num2.id);//here I need to compare result 1 ID and result2 id of each element
});
3条答案
按热度按时间vfh0ocws1#
你可能会得到一个错误,因为当你迭代
result
的时候,你最终会得到index === 2
,然后const num2 = result2[index]
是未定义的,因为result2
没有那么多的元素,任何像num2.id
这样的元素都会抛出一个错误。我不完全确定您要实现什么,但听起来您想迭代第一个数组,并在第二个数组中找到匹配的元素,然后如果匹配,则对它们执行操作,否则什么也不做。
t5fffqht2#
不确定你是否真的需要使用
Array#forEach
,根据你需要返回的内容,你可以使用其他的方法,比如Array#find
,就像下面的演示一样,返回result1
元素或者它的一个属性,或者null
。xkftehaa3#
你可以通过id和相同的名字过滤。2然后改变这个值。
输出如下: