是否可以使用ForEach根据userInput值

时间:2016-02-19 09:27:46

标签: javascript arrays foreach

我想知道这个数组是否可行

marginIDs = [3005, 3002, 3007, 3014, 3095, 3025, 3004]

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

创建一个只包含numbersID(或覆盖marginID)的数组

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

3 个答案:

答案 0 :(得分:4)

如果要创建新数组,则可以使用.map数组函数,因为其他答案已指定。如果你真的想改变数组,那么你必须通过索引来引用它,因为你无法控制forEach函数中的数组:

var marginBase = 3000;
var marginIds = [3005, 3002, 3007, 3014, 3095, 3025, 3004];
marginIds.forEach(function (marginId, index) {
    marginIds[index] = marginId - marginBase;
});

答案 1 :(得分:2)

您可以使用map

var mapped = marginIDs.map(function(m) { return m - marginBase });

并非某些旧浏览器不支持此功能。

答案 2 :(得分:1)

使用Array#forEach:



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>');
&#13;
&#13;
&#13;

覆盖原始数组的解决方案

&#13;
&#13;
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>');
&#13;
&#13;
&#13;