如何使用Array.push并返回推送的项目?

时间:2019-02-09 17:39:00

标签: javascript arrays

我正在打电话给return someArr[someArr.push(newItem)-1];,它确实应有的作用。

想知道该极其常见操作是否有句法“糖”?我想知道,因为返回的新length确实比实际构造的对象(调用者可能确实想对之进行构造)要少得多。还是这样做是因为它实际上将返回“对象的副本”,而我对其字段的编辑在实际树中“将无法生存”?

就像JS <= 1.2一样:return someArr.push(newItem);

只想知道-是否有我不知道的新的“替换”方法?


我还有一个次要的子问题“返回对象的“独立”副本或对实际对象的“引用”吗?” ,但fiddle简单@PatricRoberts }刚刚发现它实际上是一个参考(正如预期的那样),所以我感谢他的帮助!

3 个答案:

答案 0 :(得分:7)

您可以使用comma operator

  

逗号运算符计算每个操作数(从左到右)并返回最后一个操作数的值。

赞:

return (someArr.push(newItem), newItem)

这等效于:

someArr.push(newItem);
return newItem

答案 1 :(得分:7)

您也可以使用logical and (&&)来做到这一点。

return someArr.push(newItem) && newItem;

由于在推送后数组长度将为正,因此将评估最右边的表达式并返回其值。

  

这种语法比@adiga使用逗号运算符的答案还不清楚。

但是,我个人更喜欢将新项目退回新行,以使其更具可读性

someArr.push(newItem);
return newItem;

答案 2 :(得分:2)

您可以通过将赋值返回当前.length的索引来实现。

return someArr[someArr.length] = newItem;

分配的结果是要分配的项目,因此将返回该结果。

分配给数组的当前.length会自动扩展它。请注意,分配给任何比当前.length高的索引将在数组中留下漏洞。