【发布时间】:2023-01-11 03:30:42
【问题描述】:
这段代码:
let rId = requested.map((r) => r._id.toString());
console.log(rId);
let cId = confirmed.map((c) => c._id.toString());
console.log(cId);
rId.filter((r) => !cId.includes(r));
console.log(rId);
打印这个:
[
'63bcc18d083dd2c66679e160',
'63bcc331083dd2c66679e278',
'63bdaef8f115ae565ac564c5'
]
[ '63bdaef8f115ae565ac564c5' ]
[
'63bcc18d083dd2c66679e160',
'63bcc331083dd2c66679e278',
'63bdaef8f115ae565ac564c5'
]
为什么当函数返回 false 语句时,数组中的最后一项没有被过滤?
我期待打印的是:
[
'63bcc18d083dd2c66679e160',
'63bcc331083dd2c66679e278',
'63bdaef8f115ae565ac564c5'
]
[ '63bdaef8f115ae565ac564c5' ]
[
'63bcc18d083dd2c66679e160',
'63bcc331083dd2c66679e278', // <-- item removed
]
【问题讨论】:
-
console.log返回undefined -
好的,即便如此,那还是在最后运行
-
我怀疑这个例子分散了你想问的问题。您能否将其更新为可运行的 minimal reproducible example 并具体指出哪些输出是意外的?删除与特定问题无关的输出。
-
array#filter返回一个包含与函数回调匹配的元素的数组。array#filter不修改现有数组。
标签: javascript