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

Die*_*nue 5 javascript arrays reactjs spread-syntax react-redux

我有一个像这样的数组:

var oldArray = [{'value': '1', 'label': 'a'}, {'value': '2', 'label': 'b'}]
Run Code Online (Sandbox Code Playgroud)

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

顺便说一句,这有效:

var oldArray = [{'value': '1', 'label': 'a'}, {'value': '2', 'label': 'b'}]
var newObj = {'value': 'all', 'label': 'all'}
var result = [newObj, ...oldArray]
Run Code Online (Sandbox Code Playgroud)

但是会生成如下所示的键“ newObj”:

var oldArray = [newObj : {'value': 'all', 'label': 'all'}, 0: {'value': '1', 'label': 'a'}, 1:{'value': '2', 'label': 'b'}]
Run Code Online (Sandbox Code Playgroud)

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

var result = [{'value': 'all', 'label': 'all'}, ...oldArray]
Run Code Online (Sandbox Code Playgroud)

并想象结果是这样的:

var oldArray = [newObj : {0: 'all', 'label': 'all'}, 1: {'value': '1', 'label': 'a'}, 2:{'value': '2', 'label': 'b'}]
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误。

现在,我正在使用unshift,它可以工作,我想知道是否有一种方法可以使用散布运算符。

小智 5

我有点晚了但是

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

改变:

var result = [newObj, ...oldArray]
Run Code Online (Sandbox Code Playgroud)

为了:

var result = [{...newObj}, ...oldArray]
Run Code Online (Sandbox Code Playgroud)


AP.*_*AP. 4

您可以使用unshift()执行此操作的函数:

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

console.log(oldArray)
Run Code Online (Sandbox Code Playgroud)

或者如果你不想修改原始数组,你可以这样做:

const result = oldArray.slice()
result.unshift(newObj)
console.log(result)
Run Code Online (Sandbox Code Playgroud)

  • @downvoter 可以提到,如果没有否决票……那么,SO 就会一天天变得更加充满敌意。 (2认同)
  • @美联社。是的,众所周知,SO/SE 是非常敌对的,互联网上到处都有人们谈论这里的消极情绪。我同意。反对票,反对票,反对票,有时毫无意义。 (2认同)