我有一个问题,我想在二维数组中的所有行中添加一列。例如:
var arr = [["Tom",456],["Peter",756],["Sara",348]];
var arr_1 = ["USA","GERMANY",AUSTRIA"];
将此数组匹配到:
[["Tom",456,"USA"],["Peter",756,"GERMANY"],["Sara",348,"AUSTRIA"]];
你有带循环或匹配函数的解决方案吗?
试试这个:
const mapToNewArray = (arr, arrTwo) => {
return arr.map((elem, index) => { elem.push(arrTwo[index]); return elem; });
}
let newArray = mapToNewArray(arr, arr_1);
将这两个数组都传递给函数。在第一个数组上运行.map()
并跟踪索引。从第二个数组中拾取相应的元素(基于索引(,并将其推送到第一个数组的当前元素。
您可以这样做:
function addColumn(array, column) {
for (let i = 0; i < array.length; i++) {
// extra check if corresponding item is present in column by index
if (column[i]) {
array[i].push(column[i]);
}
}
return array;
}
var arr = [["Tom",456],["Peter",756],["Sara",348]];
var arr_1 = ["USA","GERMANY","AUSTRIA"];
addColumn(arr, arr_1);
arr.forEach((item, index) => item.push(arr_1[index]));
console.log(arr);
如果两个数组中的元素数量相同,并且无关紧要,那么当长度不相等时,它会填充未定义的孔。
为了避免数组中未定义,请在推送之前添加check。
在JavaScript中有很多方法可以循环遍历数组:https://www.codespot.org/ways-to-loop-through-an-array-in-javascript/
也许最容易理解的方法是:
var arr = [["Tom",456],["Peter",756],["Sara",348]];
var arr_1 = ["USA","GERMANY","AUSTRIA"];
for (let i = 0; i < arr.length; i++) {
arr[i].push(arr_1[i]);
}