首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以使用ForEach来根据userInput值更改数组

是否可以使用ForEach来根据userInput值更改数组
EN

Stack Overflow用户
提问于 2016-02-19 09:27:46
回答 3查看 39关注 0票数 0

我在想,如果有这个数组的话

代码语言:javascript
运行
复制
marginIDs = [3005, 3002, 3007, 3014, 3095, 3025, 3004]

并知道marginBase = 3000 (marginID是由marginBase和numberID创建的)

创建只包含numbersID的数组(或覆盖边沿an )

[5, 2, 7, 14, 95, 25, 4]ForEach

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-19 09:36:18

如果您想要创建一个新的数组,那么您可以按照其他答案指定的那样使用.map数组函数。如果您实际上想要改变数组,那么您必须通过索引引用它,因为您无法从forEach函数中控制该数组:

代码语言:javascript
运行
复制
var marginBase = 3000;
var marginIds = [3005, 3002, 3007, 3014, 3095, 3025, 3004];
marginIds.forEach(function (marginId, index) {
    marginIds[index] = marginId - marginBase;
});
票数 4
EN

Stack Overflow用户

发布于 2016-02-19 09:29:18

您可以为此使用map

代码语言:javascript
运行
复制
var mapped = marginIDs.map(function(m) { return m - marginBase });

这并不是说一些旧的浏览器不支持这一点。

票数 2
EN

Stack Overflow用户

发布于 2016-02-19 09:32:14

使用Array#forEach:

代码语言:javascript
运行
复制
var marginIDs = [3005, 3002, 3007, 3014, 3095, 3025, 3004],
    marginBase = 3000,
    base = [];

marginIDs.forEach(function (id) {
    base.push(id - marginBase);
});

document.write('<pre>' + JSON.stringify(base, 0, 4) + '</pre>');

覆盖原始数组的解决方案

代码语言:javascript
运行
复制
var marginIDs = [3005, 3002, 3007, 3014, 3095, 3025, 3004],
    marginBase = 3000;

marginIDs.forEach(function (id, i , array) {
    array[i] = id - marginBase;
});

document.write('<pre>' + JSON.stringify(marginIDs, 0, 4) + '</pre>');

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

https://stackoverflow.com/questions/35501731

复制
相关文章

相似问题

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