数组中的每一项都是一个数字:

var items = Array(523,3452,334,31, ...5346);

如何用新物品替换旧物品?

例如,我们想用1010替换3452,该怎么做呢?


当前回答

如果使用一个复杂的对象(甚至是一个简单的对象),你可以使用es6, Array.prototype.findIndex是一个很好的选择。对于OP的数组,他们可以这样做,

const index = items.findIndex(x => x === 3452)
items[index] = 1010

对于更复杂的对象,这真的很管用。例如,

const index = 
    items.findIndex(
       x => x.jerseyNumber === 9 && x.school === 'Ohio State'
    )

items[index].lastName = 'Utah'
items[index].firstName = 'Johnny'

其他回答

使用ES6扩展操作符和.slice方法替换列表中元素的不可变方法。

const arr = ['fir', 'next', 'third'], item = 'next'

const nextArr = [
  ...arr.slice(0, arr.indexOf(item)), 
  'second',
  ...arr.slice(arr.indexOf(item) + 1)
]

验证它是否有效

console.log(arr)     // [ 'fir', 'next', 'third' ]
console.log(nextArr) // ['fir', 'second', 'third']
 items[items.indexOf(3452)] = 1010

非常适合简单的交换。试试下面的代码片段

const items =数组(523,3452,334,331,5346); console.log(物品) items[items. indexof (3452)] = 1010 console.log(物品)

如果使用一个复杂的对象(甚至是一个简单的对象),你可以使用es6, Array.prototype.findIndex是一个很好的选择。对于OP的数组,他们可以这样做,

const index = items.findIndex(x => x === 3452)
items[index] = 1010

对于更复杂的对象,这真的很管用。例如,

const index = 
    items.findIndex(
       x => x.jerseyNumber === 9 && x.school === 'Ohio State'
    )

items[index].lastName = 'Utah'
items[index].firstName = 'Johnny'

来自@gilly3的回答很棒。

替换数组中的对象,保持数组顺序不变

当我从服务器获取数据时,我更喜欢以下方式将新的更新记录更新到我的记录数组中。它保持秩序完整,相当直截了当的一行。

Users =用户。map(u => u.id !== editedUser。)id吗?u: editedUser);

Var用户= [ {id: 1,姓:'John',姓:'Ken'}, {id: 2,姓:'Robin',姓:'Hood'}, {id: 3,名:“威廉”,姓:“库克”} ]; var editedUser = {id: 2,名字:'Michael',姓:'Angelo'}; Users =用户。map(u => u.id !== editedUser。)id吗?u: editedUser); Console.log ('users -> ', users);

第一个方法

在一行中替换或更新数组项的最佳方法

array.splice(array.indexOf(valueToReplace), 1, newValue)

Eg:

let items = ['JS', 'PHP', 'RUBY'];

let replacedItem = items.splice(items.indexOf('RUBY'), 1, 'PYTHON')

console.log(replacedItem) //['RUBY']
console.log(items) //['JS', 'PHP', 'PYTHON']

第二种方法

另一种简单的方法是:

items[items.indexOf(oldValue)] = newValue