我正在尝试创建一个非常简单的嵌套for循环,以打印出NxN(对于任何N)数组中的每个项目。看起来很简单,但我不断收到此错误:
“ TypeError:无法读取未定义的属性'0'”
我尝试了多种访问数组中每个项目/子项目的方法,但是没有运气。我不断收到相同的错误。 (并且bing传入函数的数组肯定是NxN。)
这是我的代码:
const twoDimensionalArray = [
[3, 4, 2, 4],
[2, 1, 5, 7],
[5, 3, 3, 2],
[3, 6, 1, 5]
];
function printMatrix(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length[i]; i++) {
console.log(arr[i][j]);
};
};
}
console.log(printMatrix(twoDimensionalArray));
答案 0 :(得分:2)
这是您的代码,其中包含注释中指出的更正
arr.length[i]
-> arr[i].length
i++
-> j++
console.log(printMatrix(twoDimensionalArray))
-> printMatrix(twoDimensionalArray)
const twoDimensionalArray = [
[3, 4, 2, 4],
[2, 1, 5, 7],
[5, 3, 3, 2],
[3, 6, 1, 5]
];
function printMatrix(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j++) {
console.log(arr[i][j]);
};
};
}
printMatrix(twoDimensionalArray);
答案 1 :(得分:1)
请使用以下代码进行更正。 始终尝试将中间阶段存储到局部变量中,并使用它以获得更好的性能
const s = "haveaniceday";
let result = encryption(s);
function encryption(s) {
let sqr = Math.sqrt(s.length),
col = Math.ceil(sqr),
row = Math.floor(sqr);
let chunks = chunkSubstr(s, col);
// => ["have", "anic", "eday"]
console.log(chunks);
var result = [];
for (var i = 0; i < chunks.length; i++) {
// do some magic here...
// expected output: "hae and via ecy"
var split = Array.from(chunks[i]);
for (var s = 0; s < split.length; s++) {
var previousValue = '';
if(result[s])
{ previousValue = result[s];}
result[s]=previousValue + split[s];
}
}
console.log(result);
}
function chunkSubstr(str, size) {
const numChunks = Math.ceil(str.length / size)
const chunks = new Array(numChunks)
for (let i = 0, o = 0; i < numChunks; ++i, o += size) {
chunks[i] = str.substr(o, size)
}
return chunks
}
答案 2 :(得分:1)
您可以使用for..of
来停止担心索引。变得非常简单。
const twoDimensionalArray = [
[3, 4, 2, 4],
[2, 1, 5, 7],
[5, 3, 3, 2],
[3, 6, 1, 5]
];
function printMatrix(arr) {
for (let i of arr) {
for (let j of i) {
console.log(j);
}
}
}
printMatrix(twoDimensionalArray);
上面的comment中也提到了这一点。
答案 3 :(得分:0)
{{1}}