第6天,JSA二维数组

拉小登Dony
拉小登Dony

创作者俱乐部成员

什么是二维数组?

表格中的数据有行、列之分,A1就是A列第1行的单元格,这种行列就像是一个坐标系,有横轴、纵轴,这就是二维。

在JavaScript中也可以模拟出这样的二维数据,很简答,给把数组的每个参数中,再赋值一个数组就可以了。

比如上面表格中的数据,就可以使用下面的JSA代码来填充。

```

function test(){

let a= [[1,2,3],[4,5,6]]

Range("A1:C2").Value2=a

}

```

为什么要用二维数组?

JSA中提到数组,一般都是指的一维数组,因为表格后多行多列的存储结构,所以在处理单元格数据的时候,通常获得到的大都是二维数组。

获取数组信息

比如,下面表格中的数据。

可以用下面的JSA获取这个区域的数据,但是获取到的是一个二维数组。

```

function test2(){

let a= Range("A1:C2").Value2

console.log(JSON.stringify(a))

console.log(a.join(","))

}

```

输出的结果如下:

```

[[1,2,3],[4,5,6]]

1,2,3,4,5,6

```

输出数组信息

这里用到了两种输出的方法。

第1个是用JSON.stringify,作用是用JSON的格式来显示数组的结构,能够更好的还原出数组的维度。

```

[[1,2,3],[4,5,6]]

```

第2个事a.join(","),作用是把数组中的元素,用逗号为间隔拼接成一个字符串,有点类似TEXTJOIN函数,这样也能看到数组中的数据,但是数组的结构就丢失了。

```

1,2,3,4,5,6

```

修改数组信息

如果要在每个数值前面加上一个字母A,变成下面的样子。

这就需要掌握二维数组的遍历操作,代码如下:

```

function test3(){

let a= Range("A1:C2").Value2

a.forEach((element)=>{

element = "A" + element;

})

console.log(JSON.stringify(a))

console.log(a.join(","))

}

```

关于数组循环遍历的知识点,上一篇文章,我已经写过了,请参考这里。

https://note.mowen.cn/note/detail?noteUuid=J7LVGN-w742nmN7I3_KYr

但是上面的代码计算结果是错误,并没有修改元素的内容,对应的结果如下:

```

[[1,2,3],[4,5,6]]

1,2,3,4,5,6

```

因为forEach循环中的element是一个临时变量,不会写入到数组a中去。

正确的代码,应该是逐行、逐列的遍历a数组,然后把修改后的内容,再赋值到a数组中去。代码如下:

```

function test4(){

let a= Range("A1:C2").Value2

let b=[[]];

for(let r=0;r <a.length;r++){

for(let c=0; c<a[0].length;c++){

a[r][c]="A" + a[r][c]

}

}

console.log(JSON.stringify(a))

console.log(a.join(","))

Range("A1:C2").Value2=a

}

```

代码24~27行,使用两个for循环嵌套,完成了行、列的遍历,并通过26行,把修改后的数据又保存到了数组a中去。

最后输出的结果如下:

```

[["A1","A2","A3"],["A4","A5","A6"]]

A1,A2,A3,A4,A5,A6

```

另外,第31行代码,将数组a的值,又填充到了单元格中去,修改后的效果如下:

MAP遍历数组

Javascript中遍历数组的方法还有很多,比如Map函数。

下面第39行代码,是使用Map函数遍历并修改了数组的内容,代码更加简洁。

```

function test5(){

let a= Range("A1:C2").Value2

a.forEach((element)=>{

element = "A" + element;

})

let b = a.map(subArray => subArray.map(num => 'A' + num));

console.log(JSON.stringify(b))

console.log(b.join(","))

Range("A1:C2").Value2=b

}

```

更多关于map函数的用法,后面再介绍。

山东省
浏览 50
收藏
3
分享
3 +1
+1
全部评论