let arr1 = [
{
is_gift: 1,
wg_id: 111,
},
{
is_gift: 1,
wg_id: 222,
},
{
is_gift: 1,
wg_id: 333,
},
];
let arr2 = [
{
is_gift: 1,
wg_id: 111,
},
{
is_gift: 3,
wg_id: 222,
},
{
is_gift: 5,
wg_id: 444,
},
{
is_gift: 4,
wg_id: 333,
},
{
is_gift: 2,
wg_id: 555,
},
];
let a = [];
let b = [];
arr2.forEach((element1) => {
arr1.forEach((element2) => {
if (element2.wg_id != element1.wg_id) {
a.push(element2);
}
if (element2.wg_id == element1.wg_id) {
b.push(element2);
}
});
});
console.log(a, 'a');
console.log(b, 'b');
为什么 if((element2.wg_id != element1.wg_id))
我打印的是全部数据,不会打印出不相等的数据。if((element2.wg_id == element1.wg_id))
却可以找出相等的数据?
从你的描述来看,似乎你的目的是想取两个数组的交集与差集,交集你的数组b
已经实现,关于差集的获取参考下面这个问题吧
https://segmentfault.com/q/1010000019019878
你的代码和你预期的结果不符合,
估计是你把两层forEach
嵌套理解成先对arr2
的所有所有元素都遍历一遍,
再对arr2
所有元素的集合再进行第二次forEach
中的比较
而实际上对外层的arr2.forEach
,只会针对arr2
中的每一个独立元素进行第二次forEach
中的比较
例如arr2.forEach
的第一次循环,element1
是{ is_gift: 1, wg_id: 111, },
然后再将arr1
中的所有元素将其比较,wg_id
不同的push进a
,相同的push进b
之后反复进行第二、三、四、五次循环
第三、四次循环中,由于arr1
中没有wg_id
与element1
(wg_id分别是444与555),所以在这两次循环中没有元素被push进b
数组,因此最终b
得到的结果就是a
、b
数组的交集。
但是每次循环中都有2个元素(第三、四次循环是3个)与element1
的wg_id
不同,他们都会被push进a
中,导致了结果中会出现重复的元素。
因为你是遍历整个arr1,只要arr1里有和arr2当前遍历到的元素不一样的 就把它加入a
举个例子:
arr2当前是111,遍历arr1: 111(相同)->222(不同) 加入a
arr2当前是222,遍历arr1: 111(不同) 加入a
arr2当前是444,遍历arr1: 111(不同) 加入a
...
发现所有arr2里的所有元素的wg_id都满足以上情况,自然a里面就是全部元素了
const dataItem = (msg.data && msg.data[0]) || msg; 如果msg.data和msg.data[0]都为真时返回msg.data[0],否则返回msg?
处理成 [11,1201,1304,1305]
和有什么区别? 我对。class文件进行了反编译,发现在第一种情况下,JVM将使用multianwearray来创建数组,而在第二种情况下,它将使用AneWarRay。 我认为在第一种情况下,JVM将创建一个连续的空间。我说的对吗?
本文向大家介绍了解事件代理吗,这样做有什么好处?相关面试题,主要包含被问及了解事件代理吗,这样做有什么好处?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 事件代理/事件委托:利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类型的事件, 简而言之:事件代理就是说我们将事件添加到本来要添加的事件的父节点,将事件委托给父节点来触发处理函数,这通常会使用在大量的同级元素需要添加同一类事件的
因此,作为学校的一部分,我正在使用For循环,我有一些代码可以工作,但我很难理解为什么它可以工作。对我来说,重要的是要真正理解为什么一块代码能做它不能做的事情,而不仅仅是它能工作。 所以有一点背景。这个小程序利用for循环,根据用户输入打印一系列字符。其思想是用户输入一个介于1和8之间的数字,程序将打印一个字符,然后移动到下一行再打印两个,移动到下一行再打印三个等等,并打印用户输入的行数。 程序在
问题内容: 我正在尝试让Javascript读取/写入PostgreSQL数据库。我在github上找到了这个项目。我能够获得以下示例代码以在节点中运行。 接下来,我试图使其在网页上运行,但是似乎什么也没有发生。我在Javascript控制台上进行了检查,它只显示“要求未定义”。 那么这是什么“要求”?为什么它在节点中有效但在网页中无效? 另外,在我让它在节点上工作之前,我必须做。那是什么意思 我