繁体   English   中英

Array.filter 也能够 map 对象数组是否正常?

[英]Is it normal for Array.filter to also be able to map an array of objects?

不确定这是否真的是一个问题,但是当我在使用 Array.filter 时不小心没有使用相等检查时,我注意到了这一点。 相反,当我觉得我应该因为不使用相等检查而收到某种错误时,它映射了我的数组:

const x = [{ name: 'user' }];
console.log(x.filter(x => x.name = 'another user'))

// Result:
// [{ name: 'another user' }]

这在任何地方都有记录吗? 我觉得这不是故意的。 我找不到任何关于 Array.filter 也能够 map 所以我在这里问它的原因。 也许这属于 github...

有许多数组方法可以很好地迭代数组的所有元素,除非以某种方式提前停止(例如通过抛出的错误,或者通过回调返回的虚假值Array.every ,或者通过回调返回的真实值到Array.find )。

这些方法都可能被滥用来做一些他们不是为之设计的事情。 没有例外,除了为副作用设计的通用迭代方法。

是的,您可以通过在回调中执行副作用来滥用.filter作为通用迭代方法的替代。 例如,您也可以以完全相同的方式滥用.map

如果您希望能够保护自己免受此类拼写错误的影响,请考虑使用 linter 来警告您,例如使用 ESLint 的no-return-assign

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM