Javascript 为什么用push链接的过滤器会有这样的行为?
下面是我在Chrome的JavaScript控制台中所做的:Javascript 为什么用push链接的过滤器会有这样的行为?,javascript,Javascript,下面是我在Chrome的JavaScript控制台中所做的: > var arr = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]; > var foo = 3; > arr.filter(function(value) { return value !== foo }); < [1, 2, 2, 4, 4, 4, 4] > arr.filter(function(value) { return value !== foo }).push(fo
> var arr = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4];
> var foo = 3;
> arr.filter(function(value) { return value !== foo });
< [1, 2, 2, 4, 4, 4, 4]
> arr.filter(function(value) { return value !== foo }).push(foo);
< 8
> arr.filter(function(value) { return value !== foo }).push(3);
< 8
var arr=[1,2,2,3,3,3,4,4,4];
>var-foo=3;
>arr.filter(函数(值){返回值!==foo});
< [1, 2, 2, 4, 4, 4, 4]
>arr.filter(函数(值){返回值!==foo}).push(foo);
< 8
>arr.filter(函数(值){返回值!==foo}).push(3);
< 8
这个8
来自哪里?来自,Array.prototype.push
返回:
调用方法的对象的新长度属性
Chrome控制台显示上一条语句中的最后一个值,这是从push
返回的,Array.prototype.push
返回:
调用方法的对象的新长度属性
Chrome控制台显示了上一条语句中的最后一个值,这是文档中推送的返回值
返回调用方法的对象的新
length
属性
在您的例子中,filter
返回一个包含7个元素的数组。将另一个元素推到数组上后,该数组有8个元素,这就是push
返回的内容。来自文档
返回调用方法的对象的新
length
属性
在您的例子中,filter
返回一个包含7个元素的数组。将另一个元素推到数组上后,该数组有8个元素,这就是push
返回的内容。array.prototype.push()
返回新数组的长度,如下所示:
如果要从操作中获取新数组,应使用array.prototype.concat()
。但你需要这样称呼它:`
arr.filter(function(value) { return value !== foo }).concat([foo]);
另一种方法是将ES6用作:
[ ...arr, foo ]
它将分散阵列的每个元素。您可以在此处进一步查看:Array.prototype.push()
返回新数组的长度,如下所示:
如果要从操作中获取新数组,应使用array.prototype.concat()
。但你需要这样称呼它:`
arr.filter(function(value) { return value !== foo }).concat([foo]);
另一种方法是将ES6用作:
[ ...arr, foo ]
它将分散阵列的每个元素。您可以在此处进一步查看:对于单个值,您可以调用
concat
,而无需将其包装在数组中。对于单个值,您可以调用concat
,而无需将其包装在数组中