问题描述
我正在用 JavaScript 编写一个程序,你输入一个数字 n
,它返回一个数组 M
,它是一个长度为 'n' 的列表,列表中的每个元素都是一个不同的列表 { {1}} 也是长度 ele
并且每个元素都为零。这是我的功能:
n
我的问题是无论我如何尝试更改 var zeros=function(n){
var M=[];
var ele=[];
for (var q=0; q<n; q++){
ele.push[q]=0;
}
for (var p=0; p<n; p++){
M.push[p]=ele;
}
return M;
};
始终保持未定义状态。谁能告诉我为什么会发生这种情况以及如何解决它?
解决方法
你不能像这样使用 Array.push[x] 推送。如果您对数组使用 push,它总是将该项目放在数组的末尾 (https://www.w3schools.com/jsref/jsref_push.asp)。所以你可以使用:
ele.push(0);
或
ele[q] = 0
,- create a non sparse Array of custom length
-
map
每个数组项(未定义的值)转化为- 2a) a new sparse Array of custom length
- 2b) 立即
fill
使用自定义value
。
function squareMatrix(n,value) {
return Array
// creates a non sparse,thus iterable,array
// which features n-times the undefined value.
.from({ length: n })
// thus,one can map over each item.
.map((item,idx) =>
// creates a sparse array of custom length `n` which
// immediately after gets filled with the custom `value`.
Array(n).fill(value)
);
}
console.log(
'squareMatrix(2,0) ...',squareMatrix(2,0)
);
console.log(
"squareMatrix(3,'??')",squareMatrix(3,'??')
);
.as-console-wrapper { min-height: 100%!important; top: 0; }