例如我有一個這樣的陣列
var myArray = [
[1,2,3],
[4,5,6],
[7,8,9,10],
[[11,12],[13,14,15]]];
for (var i = 0;i < myArray.length;i ){
for(var j = 0 ;j< myArray[i].length;j ){
for(var k = 0;k< myArray[i][j].length;k ){
console.log(myArray[i],[j][k]);
}
}
}
但是輸出只有11、12、13、14、15。我想列印所有的值 誰能幫忙解決一下 提前謝謝
uj5u.com熱心網友回復:
您可以使用遞回函式首先將整個陣列傳遞給它然后回圈它并檢查您正在訪問的元素是陣列還是數字如果它的陣列再次呼叫相同的函式并且只傳遞它這個元素否則如果它的數字只是列印它
即使您不知道有多少嵌套陣列,這也有效,否則使用 MWO 答案
var myArray = [
[1,2,3],
[4,5,6],
[7,8,9,10],
[[11,12],[13,14,15]]];
function printArray(arr){
for(var i = 0; i < arr.length; i ){
if(Array.isArray(arr[i])){
printArray(arr[i]);
}else{
console.log(arr[i]);
}
}
}
printArray(myArray);
uj5u.com熱心網友回復:
使用例如 Array.prototype.flat(), .flat(2) 展平到 2 個陣列深的水平。
var myArray = [
[1,2,3],
[4,5,6],
[7,8,9,10],
[[11,12],[13,14,15]]];
console.log(myArray.flat(2));
uj5u.com熱心網友回復:
此功能適用于任何深度的多維陣列。使用遞回
var myArray = [1,2,33,44, [1,2,3], [[11,12],[13,14,15]]];
var myArray1 = [1,2,33,44, [[11,12],[13,14,15]]];
var deepFlattenArray = function (array){
var result = [];
array.forEach(function (element) {
if (Array.isArray(element)) {
result = result.concat(deepFlattenArray(element));
} else {
result.push(element);
}
});
return result;
};
console.log(deepFlattenArray(myArray));
// output = [ 1, 2, 33, 44, 1, 2, 3, 11, 12, 13, 14, 15]
console.log(deepFlattenArray(myArray1));
// output = [1, 2, 33, 44, 11, 12, 13, 14, 15 ]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/377211.html
標籤:javascript 数组 循环
