javascript 为什么此过滤器功能无法按预期工作?[已关闭]

ndasle7k  于 2023-01-11  发布在  Java
关注(0)|答案(2)|浏览(131)

**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
13小时前关门了。
Improve this question
此代码:

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
]
8cdiaqws

8cdiaqws1#

filter不会改变原始数组。您应该将结果赋给一个变量。

rId = rId.filter((r) => !cId.includes(r));
console.log(rId);
1cosmwyk

1cosmwyk2#

筛选器不会改变它所调用的数组。
您需要将筛选器的结果设置为一个值;

rId = rId.filter((r) => !cId.includes(r));

相关问题