gpt4 book ai didi

JavaScript:为什么我不能用 .push() 链接 Array.prototype.filter?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:08:07 25 4
gpt4 key购买 nike

如果 Array.prototype.filter 返回一个数组,为什么我不能立即对该返回值调用 push()

例子:

var arr = ["a", "ab", "c", "ad"];
var arr2 = arr.filter(function(elmnt) { return elmnt.indexOf("a") > -1; });
// result: ["a", "ab", "ad"]

arr2.push("aaa");
// result: ["a", "ab", "ad", "aaa"]

到此为止。

但是如何将 push() 调用链接到 filter() 调用呢?

var arr = ["a", "ab", "c", "ad"];
var arr2 = arr.filter(function(elmnt) { return elmnt.indexOf("a") > -1; }).push("aaa");
// result: 4

为什么链接 filter()push() 会产生我期望的元素数量,而不是这些元素的数组?

最佳答案

问题不在于 filter() 的返回值,而在于 push() 的返回值。

push() 返回数组的新长度,而不是数组本身。

所以当你这样做的时候:

var arr2 = arr.filter(function(elmnt) { return elmnt.indexOf("a") > -1; }).push("aaa");

arr2 将分配给数组的新长度(在您的情况下恰好为 4),而不是新数组本身。

将执行您想要的操作的修改版本是:

var arr = ["a", "ab", "c", "ad"], arr2;
(arr2 = arr.filter(function(elmnt) { return elmnt.indexOf("a") > -1; })).push("aaa");
// now arr2 is ["a", "ab", "ad", "aaa"]

关于JavaScript:为什么我不能用 .push() 链接 Array.prototype.filter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21933217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com