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

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

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

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


当前回答

Array.indexOf()方法将替换第一个实例。获取每个实例使用Array.map():

a = a.map(function(item) { return item == 3452 ? 1010 : item; });

当然,这会创建一个新数组。如果你想在适当的地方做,使用Array.forEach():

a.forEach(function(item, i) { if (item == 3452) a[i] = 1010; });

其他回答

使用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']

首先,像这样重写数组:

var items = [523,3452,334,31,...5346];

接下来,通过索引号访问数组中的元素。确定索引号的公式为:n-1

要替换数组中的第一项(n=1),写:

items[0] = Enter Your New Number;

在您的示例中,数字3452位于第二个位置(n=2)。所以确定索引号的公式是2-1 = 1。因此,编写下面的代码将3452替换为1010:

items[1] = 1010;

如果你想要一个简单的糖纸,你可以:

(elements = elements.filter(element => element.id !== updatedElement.id)).push(updatedElement);

如:

let elements = [ { id: 1, name: 'element one' }, { id: 2, name: 'element two'} ];
const updatedElement = { id: 1, name: 'updated element one' };

如果你没有id,你可以像这样字符串化元素:

(elements = elements.filter(element => JSON.stringify(element) !== JSON.stringify(updatedElement))).push(updatedElement);

这个就行了

Array.prototype.replace = function(a, b) {
    return this.map(item => item == a ? b : item)
}

用法:

let items = ['hi', 'hi', 'hello', 'hi', 'hello', 'hello', 'hi']
console.log(items.replace('hello', 'hi'))

输出:

['hi', 'hi', 'hi', 'hi', 'hi', 'hi', 'hi']

好处是,每个数组都有.replace()属性。

来自@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);