JS:使用数组方法打印数组的主对角线

JS: Print main diagonal of array using array methods

如何在不使用循环 for(...) 而是使用数组方法的情况下打印数组的主对角线?


 const arr = [
 [1,6,8,-1],
 [0,2,-6,5],
 [0,-5,3,6],
 [9,-1,1,0] ];

这里元素arr[0][0] = 1,arr[1][1]=2,arr[2][2]=3,arr[3][3]=0是元素主对角线。我们可以使用循环打印它们:


for (let i=0;i<arr.length;i++)
{
    console.log(arr[i][i]);
}

但是是否可以使用 .forEach .map 或其他方法打印它们?

您可以使用数组方法来获得相同的结果,但无论如何它们都在内部使用 for 循环,在这种情况下,单个 for 循环对我来说看起来更具可读性。

但是,如果你真的想这样做,你可以这样做:

const arr = [
 [1,6,8,-1],
 [0,2,-6,5],
 [0,-5,3,6],
 [9,-1,1,0] ];
 
const result = arr.map((sub_array, index) => sub_array.filter((number, index2) => index === index2));
console.log(result);

您可以使用 Array.prototype.map 但实际上他们使用内部循环:

var a = [
 [1,6,8,-1],
 [0,2,-6,5],
 [0,-5,3,6],
 [9,-1,1,0] ];

var r = a.map((v, i) => v[i]);

console.log(r);