Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数createIdentityMatrix(a,b)_Javascript_Arrays_For Loop_Matrix - Fatal编程技术网

Javascript 函数createIdentityMatrix(a,b)

Javascript 函数createIdentityMatrix(a,b),javascript,arrays,for-loop,matrix,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 <

我需要创建函数,即创建如下内容:

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));
var nextTab=[]
var选项卡=[nextTab]
函数createIdentityMatrix(a,b){
对于(变量i=0;i
如您所见,它不起作用,如果我使用
返回选项卡
,情况也一样。我知道返回语句正在关闭循环


那么,如何在四个循环之后创建一个新数组,并将其推大一倍呢?

您可以检查外部数组的索引是否等于内部数组的索引,然后返回
1
,否则返回
0

函数createIdentityMatrix(a,b){
返回数组.from(
{length:a},
(u,i)=>Array.from({length:b},(u,j)=>+(i==j))
);
}

log(createIdentityMatrix(4,4))
您可以检查外部数组的索引是否等于内部数组的索引,然后返回
1
,否则返回
0

函数createIdentityMatrix(a,b){
返回数组.from(
{length:a},
(u,i)=>Array.from({length:b},(u,j)=>+(i==j))
);
}

log(createIdentityMatrix(4,4))使用函数式编程可能会更优雅:

const identity = (width, height) => 
 Array.from({length: width}, (_, row) => 
   Array.from({length: height}, (_, col) => +(row === col))
 );

使用函数式编程可能会更优雅:

const identity = (width, height) => 
 Array.from({length: width}, (_, row) => 
   Array.from({length: height}, (_, col) => +(row === col))
 );

你想做这样的事吗

function createIdentityMatrix(size) {
const matrix = [];
for (let i = 0; i < size; i++) {
    const line = [];
    for (let j = 0; j < size; j++) {
        line[j] = i === j ? 1 : 0;
    }
    matrix.push(line);
}

return matrix;
函数createIdentityMatrix(大小){
常数矩阵=[];
for(设i=0;i

}

你想做这样的事吗

function createIdentityMatrix(size) {
const matrix = [];
for (let i = 0; i < size; i++) {
    const line = [];
    for (let j = 0; j < size; j++) {
        line[j] = i === j ? 1 : 0;
    }
    matrix.push(line);
}

return matrix;
函数createIdentityMatrix(大小){
常数矩阵=[];
for(设i=0;i

}

我只是尝试了几件事。。。这是我的最后一个版本的代码。看起来不太好,但我在找解决办法。你有什么建议吗?
tab.push([nextTab.push(1)])
应该做什么?我只是尝试了几件事。。。这是我的最后一个版本的代码。看起来不太好,但我在找解决办法。你有什么建议?什么是
tab.push([nextTab.push(1)])
应该做什么?很好,它工作得很好,但我需要使用两个循环来完成此操作。。。我不知道我可以创建这样的代码。很好,它工作得很好,但我需要使用2个循环来完成这项工作。。。我不知道我可以创建这样的代码。我可以使用2 for循环来实现吗?我是说纯JavaScript——我需要理解我自己的代码,而且我是初学者。我可以使用2 for循环来实现这一点吗?我是说纯JavaScript——我需要理解我自己的代码,而且我是初学者。是的,它更接近纯JavaScript。我需要函数createIdentityMatrix(size,sizewo)并在纯javaScriptline[j]=I==j中创建它?1 : 0; 这是什么意思?你能解释一下吗?这就像如果这个语句是真的(i==j),那么将值设置为1,否则将其设置为0。是的,它更接近于纯javaScript。我需要函数createIdentityMatrix(size,sizewo)并在纯javaScriptline[j]=I==j中创建它?1 : 0; 这是什么意思?你能解释一下吗?就像如果这个语句是真的(i==j),那么就把值设为1,否则就把它设为0。