我在想,如果有这个数组的话
marginIDs = [3005, 3002, 3007, 3014, 3095, 3025, 3004]并知道marginBase = 3000 (marginID是由marginBase和numberID创建的)
创建只包含numbersID的数组(或覆盖边沿an )
即[5, 2, 7, 14, 95, 25, 4]与ForEach
发布于 2016-02-19 09:36:18
如果您想要创建一个新的数组,那么您可以按照其他答案指定的那样使用.map数组函数。如果您实际上想要改变数组,那么您必须通过索引引用它,因为您无法从forEach函数中控制该数组:
var marginBase = 3000;
var marginIds = [3005, 3002, 3007, 3014, 3095, 3025, 3004];
marginIds.forEach(function (marginId, index) {
marginIds[index] = marginId - marginBase;
});发布于 2016-02-19 09:29:18
您可以为此使用map:
var mapped = marginIDs.map(function(m) { return m - marginBase });这并不是说一些旧的浏览器不支持这一点。
发布于 2016-02-19 09:32:14
使用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>');
覆盖原始数组的解决方案
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>');
https://stackoverflow.com/questions/35501731
复制相似问题