【发布时间】:2017-09-26 17:23:01
【问题描述】:
我有一个这样的数组:
var oldArray = [{'value': '1', 'label': 'a'}, {'value': '2', 'label': 'b'}]
我想要的是使用扩展运算符在该数组的开头添加一个新对象:
顺便说一句,这可行:
var oldArray = [{'value': '1', 'label': 'a'}, {'value': '2', 'label': 'b'}]
var newObj = {'value': 'all', 'label': 'all'}
var result = [newObj, ...oldArray]
但是会生成一个像这样的键“newObj”:
var oldArray = [newObj : {'value': 'all', 'label': 'all'}, 0: {'value': '1', 'label': 'a'}, 1:{'value': '2', 'label': 'b'}]
如果我这样做,我希望自动生成密钥:
var result = [{'value': 'all', 'label': 'all'}, ...oldArray]
想象一下结果是这样的:
var oldArray = [newObj : {0: 'all', 'label': 'all'}, 1: {'value': '1', 'label': 'a'}, 2:{'value': '2', 'label': 'b'}]
但这给了我一个错误。
现在我正在使用 unshift 并且它可以工作,我想知道是否有办法使用扩展运算符来做同样的事情。
【问题讨论】:
-
你不能只用
unshift()吗? -
var result = [newObj, ...oldArray]也给出了正确的输出。我错过了什么吗? -
这么多答案建议 unshift 但这不是你问的。
var result = [newObj, ...oldArray]确实有效并且是正确的答案,问题是你的问题有一个错误的前提...... -
@AluanHaddad 我说过 var result = [newObj, ...oldArray] 有效,而我使用的是 unshift 有效。但是我正在使用一个下拉库,该库将结果数组用于生成下拉列表,并且 result = [newObj, ...oldArray] 会生成一个破坏该库的键值。我已经纠正了删除错误前提的问题。
标签: javascript arrays reactjs react-redux spread-syntax