我需要创建函数,即创建类似这样的东西:
createIdentityMatrix(4,4) => [ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1] ];
我做了这样的事情:
var nextTab = []
var tab = [nextTab]
function createIdentityMatrix(a,b) {
for (var i = 0; i < a; i++) {
for (var j = 0; j < b; j++) {
if (i === j) {
// secondTab.push([tab.push(1)])
tab.push([nextTab.push(1)])
}else {
tab.push([nextTab.push(0)])
// secondTab.push([tab.push(0)])
}
}return nextTab
}
}
console.log(createIdentityMatrix(4,4));
如您所见,它不起作用,如果我执行返回选项卡
,效果也是一样。我知道 return 语句正在关闭循环...
那么如何在四次循环后创建一个新数组,并将其推大一次?
最佳答案
您可以检查外部数组的索引是否等于内部数组的索引,然后返回1
,否则返回0
。
function createIdentityMatrix(a, b) {
return Array.from(
{ length: a },
(_, i) => Array.from({ length: b }, (_, j) => +(i === j))
);
}
console.log(createIdentityMatrix(4, 4));
关于javascript - 函数 createIdentityMatrix(a,b),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50629358/