繁体   English   中英

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

[英]How to use Array.push and return the pushed item?

我打电话给return someArr[someArr.push(newItem)-1]; 它做得很好。

想知道这个极其常见的操作是否有句法“糖”? 我想知道因为返回的新length确实比实际构造的对象(调用者可能想要填充)更不需要。 还是因为它实际上会返回“对象的副本”,而我对其字段的编辑在实际树中“将无法生存”?

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

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


另外我有一个小问题“这是否返回对象的'独立'副本或对实际对象的'引用'?” 但是@PatricRoberts 的简单小提琴才发现它实际上是一个参考(正如预期的那样),所以我感谢他的帮助!

您也可以使用逻辑和 (&&)来做到这一点。

return someArr.push(newItem) && newItem;

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

不过,这种语法不如@adiga 使用逗号运算符的答案清晰。

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

someArr.push(newItem);
return newItem;

您可以使用逗号运算符

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

像这样:

return (someArr.push(newItem), newItem)

这相当于:

someArr.push(newItem);
return newItem

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

return someArr[someArr.length] = newItem;

分配的结果是被分配的项目,因此这就是将返回的内容。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM