12

我有一个这样的数组:

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

4

3 回答 3

7

我有点晚了,但是

您可以使用 spreed 像这样修改它来解决这个问题:

改变:

var result = [newObj, ...oldArray]

为了:

var result = [{...newObj}, ...oldArray]
于 2020-08-26T16:26:44.200 回答
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)
于 2017-04-28T14:40:52.833 回答
1

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

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

console.log(oldArray);

于 2017-04-28T14:40:56.083 回答