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。