我想知道这个数组是否可行
marginIDs = [3005, 3002, 3007, 3014, 3095, 3025, 3004]
并知道marginBase = 3000 (marginID由marginBase和numberID创建)
创建一个只包含numbersID(或覆盖marginID)的数组
即。 [5, 2, 7, 14, 95, 25, 4]
与 ForEach
答案 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;
覆盖原始数组的解决方案
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;