该数组中的每一项都是某个数字:
var items = Array(523,3452,334,31, ...5346);
如何用一个新的项目替换一些项目?
例如,我们想用1010
替换3452
,我们该怎么做呢?
发布于 2011-05-07 02:56:22
var index = items.indexOf(3452);
if (index !== -1) {
items[index] = 1010;
}
另外,建议您不要使用构造函数方法来初始化数组。相反,请使用文字语法:
var items = [523, 3452, 334, 31, 5346];
如果您正在使用简明的JavaScript并希望缩短-1
比较,也可以使用~
运算符:
var index = items.indexOf(3452);
if (~index) {
items[index] = 1010;
}
有时我甚至喜欢写一个contains
函数来抽象化这个检查,让它更容易理解发生了什么。令人敬畏的是,它同时适用于数组和字符串:
var contains = function (haystack, needle) {
return !!~haystack.indexOf(needle);
};
// can be used like so now:
if (contains(items, 3452)) {
// do something else...
}
从用于字符串的ES6/ES2015开始,以及建议用于数组的ES2016,您可以更轻松地确定源是否包含其他值:
if (haystack.includes(needle)) {
// do your thing
}
发布于 2011-05-07 03:03:03
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; });
发布于 2018-09-29 15:38:30
我建议的解决方案是:
items.splice(1, 1, 1010);
拼接操作将从数组中位置1开始删除1个项(即3452
),并用新的项1010
替换它。
https://stackoverflow.com/questions/5915789
复制相似问题