javascript - Array.push 返回推送值?

标签 javascript arrays

为什么修改 Array.push() 以返回推送的对象而不是新数组的长度可能是个坏主意,是否有任何实质性原因?

我不知道之前是否有人提出或询问过这个问题; Google 搜索只返回了无数与 Array.push() 当前功能相关的问题。

这是此功能的示例实现,请随时更正它:

;(function() {
    var _push = Array.prototype.push;
    Array.prototype.push = function() {
        return this[_push.apply(this, arguments) - 1];
    }
}());

然后你就可以做这样的事情了:

var someArray = [],
    value = "hello world";

function someFunction(value, obj) {
    obj["someKey"] = value;
}

someFunction(value, someArray.push({}));

例如,其中 someFunction 修改作为第二个参数传入的对象。现在 someArray 的内容是 [{"someKey": "hello world"}]

这种方法有什么缺点吗?

最佳答案

See my detailed answer here

TLDR;
当您改为使用 array.concat[] 添加元素时,您可以获得变异数组的返回值。

concat 是一种将两个数组“相加”或“连接”在一起的方法。这个方法很棒的地方在于它有一个结果数组的返回值,所以它可以被链接起来。

newArray = oldArray.concat[newItem];

这还允许您将函数链接在一起

updatedArray = oldArray.filter((item) => { item.id !== updatedItem.id).concat[updatedItem]};

哪里 item = {id: someID, value: someUpdatedValue}

要注意的主要事情是,您需要将数组 传递给concat
因此,请确保将要“推送”的值放在几个方括号内,这样就可以了。
这将为您提供您期望从 push()

获得的功能

您可以使用 + 运算符将两个数组“相加”,或者将要连接的数组作为参数传递给 concat()

let arrayAB = arrayA + arrayB;
let arrayCD = concat(arrayC, arrayD);

请注意,通过使用 concat 方法,您可以利用 concat 前后的“链接”命令。

关于javascript - Array.push 返回推送值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23354896/

相关文章:

javascript - 模块模式错误: Cannot set property of undefined

javascript - reshape 存储在集合中的数组并导出为 CSV

javascript - Plotly addTraces/relayout 提供与 newPlot 不同的输出

php - 按一列对二维数据进行分组并对另一列求和以生成关联数组

c - c 中的字符串作为数组

javascript - 无法通过我的带有 jasmine 的 post http 函数的测试

javascript - pdftron复制错误的文本

php - 使用 AngularJS 将数组作为参数传递给 PHP Restful Api

php - 使用 php 将 json 对象转换为数组

ios - 根据 Int 查找 JSON 字典中的前 10 项