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

Add object to the beginning of array using spread operator

我有一个这样的数组:

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

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

顺便说一下:

1
2
3
var oldArray = [{'value': '1', 'label': 'a'}, {'value': '2', 'label': 'b'}]
var newObj = {'value': 'all', 'label': 'all'}
var result = [newObj, ...oldArray]

但生成一个类似于以下的键"newobj":

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

我希望自动生成密钥,就像我这样做:

1
var result = [{'value': 'all', 'label': 'all'}, ...oldArray]

想象一下结果是这样的:

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

但那给了我一个错误。

现在我正在使用unshift,它可以工作,我想知道是否有一种方法可以对spread操作符进行同样的操作。


您可以使用unshift()函数,该函数执行以下操作:

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

console.log(oldArray)

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

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


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

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

console.log(oldArray);