数组过滤器返回奇怪的结果

gurvinder372

关于这个问题,我想尝试一下

var arr = [0,1,2,true,4,{"abc":123},6,7,{"def":456},9,[10]];
arr.filter(Object.hasOwnProperty,"abc");//outputs [0, 1, 2]
arr.filter(Object.hasOwnProperty,"2222222") //[0, 1, 2, 4, 6]

有谁知道为什么过滤器返回这些值?过滤器的规格MDN文档也没有明确说明如何使用过滤器的第二个参数。

塞尔克斯

的第二个参数是将作为第一个参数传递的函数Array.prototype.filter的值this

因此,您的代码最终类似于:

arr.filter(function(v, i, a) {
    return Object.hasOwnProperty.call("222", v, i, a);
});

因此,它基本上检查"222"字符串是否具有您在数组中枚举的属性。

从它变得很清楚,为什么性能01以及2被发现-因为这些是在人物的指标"222"串,并说,9还是{"abc":123}不-因为"222"字符串没有这样的特性。

较长的字符串是相同的情况,其中还包括属性46只是因为它更长。

一些例子:

Object.hasOwnProperty.call("222", 1); // true, because `"222"[1]` is there
Object.hasOwnProperty.call("222", 'foo'); // false, because `"222"['foo']` is not there

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数组过滤器未返回正确的值

来自分类Dev

部分数组过滤器

来自分类Dev

MuleSoft JSON 数组过滤器

来自分类Dev

数组过滤器方法未返回调整后的值

来自分类Dev

Mongoose - 使用 findOneAndUpdate 和数组过滤器仅返回更新的项目

来自分类Dev

仅返回唯一元素的嵌套数组过滤器

来自分类Dev

数组过滤器,使用键过滤数据

来自分类Dev

如何使用Javascript数组过滤器过滤0?

来自分类Dev

数组过滤器更改主数组

来自分类Dev

GPUImage组过滤器

来自分类Dev

通过检查多个条件的Javascript数组过滤器

来自分类Dev

javascript在数组过滤器内嵌套for循环

来自分类Dev

Knockout.Js数组过滤器语法

来自分类Dev

数组过滤器的异步或承诺条件

来自分类Dev

具有JSON数组过滤器的Filterpredicate

来自分类Dev

PHP数组过滤器有多个条件

来自分类Dev

循环内部数组过滤器方法

来自分类Dev

使用keep_if的数组过滤器

来自分类Dev

数组过滤器的异步或承诺条件

来自分类Dev

基于多列的数组过滤器

来自分类Dev

具有绑定值的数组过滤器

来自分类Dev

javascript在数组过滤器内嵌套for循环

来自分类Dev

通过数组过滤器长度查询ElasticSearch

来自分类Dev

Elasticsearch - 数组过滤器中的值

来自分类Dev

php数组过滤器函数问题与变量

来自分类Dev

用于执行函数的 Javascript 数组过滤器

来自分类Dev

反应多维数组过滤器/查找

来自分类Dev

数组过滤器不适用于状态

来自分类Dev

Angular 2 - 比较数组过滤器中的日期