具有以下形式的数组:
anArray = [
["name0", 1, 3, 4, "name1"],
["name2", 5, 5, 12, 1],
];
我只想对数组内部的数值执行某些操作,例如将它们加2。
我的解决方案无效:
anArray.forEach((subAr) => {
subAr.filter(s => (typeof s) === 'number').map(a => a + 2);
});
你知道怎么了吗?
答案 0 :(得分:2)
您不能像这样更改数字,必须使用子数组(例如,使用forEach
来引用它们)
anArray.forEach(subAr =>
subAr.forEach((n, i) => subAr[i] = typeof n == "number"? n + 2: n)
);
let anArray = [
["name0", 1, 3, 4, "name1"],
["name2", 5, 5, 12, 1],
];
anArray.forEach(subAr =>
subAr.forEach((n, i) => subAr[i] = typeof n == "number"? n + 2: n)
);
console.log(anArray);
或使用map
替换整个子数组:
anArray = anArray.map(subAr =>
subAr.map(n => typeof n == "number"? n + 2: n)
);
let anArray = [
["name0", 1, 3, 4, "name1"],
["name2", 5, 5, 12, 1],
];
anArray = anArray.map(subAr =>
subAr.map(n => typeof n == "number"? n + 2: n)
);
console.log(anArray);
答案 1 :(得分:1)
您没有使用forEach循环的结果。这段代码应该可以完成工作:
anArray = [
["name0", 1, 3, 4, "name1"],
["name2", 5, 5, 12, 1],
];
anArray = anArray.map(subArray => subArray.map(el => (typeof el) ==="number" ? el + 2 : el ))
console.log(anArray);
答案 2 :(得分:0)
如果您想对数组进行突变,只需使用常规的for循环即可:
for(const subArray of anArray) {
for(const [index, entry] of subArray.entries()) {
if(typeof entry === "number") {
subArray[index] = entry + 2;
}
}
}
或者,如果您喜欢不可读的代码,请执行以下操作:
anArray = anArray.map(subArray => subArray.map(entry => typeof entry === "number" ? entry + 2 : entry));