此数组的每个项目都是一些数字:
var items = Array(523,3452,334,31, ...5346);
如何用新物品代替某些物品?
例如,我们要替换3452
为1010
,我们将如何做呢?
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
}
您可以使用@ValRob
findIndex
。看到这个答案:stackoverflow.com/a/53952276/2430274请比较中索引!== -1代表什么。谢谢