javascript - 函数 createIdentityMatrix(a,b)

标签 javascript arrays for-loop matrix

我需要创建函数,即创建类似这样的东西:

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/

相关文章:

javascript - 您可以在其构造函数内将对象添加到数组中吗

javascript - 使用 $or 在 mongoose 中复杂化多个查询

javascript - 如何使用 Node 请求模块正确编码表情符号?

php - 用 mysql 数组填充 php 表单字段(点击)

Java 为有限和给出无穷大

c - 如何更改二维数组中的位置

javascript - Jquery 表单验证脚本

Java如何对数组: List<Object[]>的列表进行排序

c - 如何实现背包算法,其中数组的索引代表元素的重量

c++ - 跳转到for循环Cuda中的下一个 block