使用spread运算符将对象添加到数组的开头

时间:2017-04-28 14:36:18

标签: javascript arrays reactjs react-redux spread-syntax

我有一个这样的数组:

var oldArray = [{'value': '1', 'label': 'a'}, {'value': '2', 'label': 'b'}]

我想要的是使用spread运算符在该数组的开头添加一个新对象:

这是有效的:

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并且它有效,我想知道是否有办法对扩展运算符做同样的事情。

3 个答案:

答案 0 :(得分:3)

你可以使用unshift()函数来完成那个:

let oldArray = [{'value': '1', 'label': 'a'}, {'value': '2', 'label': 'b'}]
let newObj = {'value': 'all', 'label': 'all'}
oldArray.unshift(newObj)

console.log(oldArray)

或者,如果您不想修改原始数组,可以执行以下操作:

const result = oldArray.slice()
result.unshift(newObj)
console.log(result)

答案 1 :(得分:3)

我来晚了,但是

您可以解决此问题,并使用spreed修改它:

更改:

var result = [newObj, ...oldArray]

针对:

var result = [{...newObj}, ...oldArray]

答案 2 :(得分:1)

您可以使用unshift()将项目添加到数组的开头



var oldArray = [{'value': '1', 'label': 'a'}, {'value': '2', 'label': 'b'}]
var newObj = {'value': 'all', 'label': 'all'}
oldArray.unshift(newObj);

console.log(oldArray);