首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何替换数组中的项?

如何替换数组中的项?
EN

Stack Overflow用户
提问于 2011-05-07 02:52:37
回答 23查看 1.1M关注 0票数 456

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

代码语言:javascript
复制
var items = Array(523,3452,334,31, ...5346);

如何用一个新的项目替换一些项目?

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

EN

回答 23

Stack Overflow用户

回答已采纳

发布于 2011-05-07 02:56:22

代码语言:javascript
复制
var index = items.indexOf(3452);

if (index !== -1) {
    items[index] = 1010;
}

另外,建议您不要使用构造函数方法来初始化数组。相反,请使用文字语法:

代码语言:javascript
复制
var items = [523, 3452, 334, 31, 5346];

如果您正在使用简明的JavaScript并希望缩短-1比较,也可以使用~运算符:

代码语言:javascript
复制
var index = items.indexOf(3452);

if (~index) {
    items[index] = 1010;
}

有时我甚至喜欢写一个contains函数来抽象化这个检查,让它更容易理解发生了什么。令人敬畏的是,它同时适用于数组和字符串:

代码语言:javascript
复制
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,您可以更轻松地确定源是否包含其他值:

代码语言:javascript
复制
if (haystack.includes(needle)) {
    // do your thing
}
票数 619
EN

Stack Overflow用户

发布于 2011-05-07 03:03:03

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

代码语言:javascript
复制
a = a.map(function(item) { return item == 3452 ? 1010 : item; });

当然,这会创建一个新的数组。如果您想就地执行此操作,请使用Array.forEach()

代码语言:javascript
复制
a.forEach(function(item, i) { if (item == 3452) a[i] = 1010; });
票数 139
EN

Stack Overflow用户

发布于 2018-09-29 15:38:30

我建议的解决方案是:

代码语言:javascript
复制
items.splice(1, 1, 1010);

拼接操作将从数组中位置1开始删除1个项(即3452),并用新的项1010替换它。

票数 61
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5915789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档