为什么修改 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"}]
。
这种方法有什么缺点吗?
最佳答案
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/