当前位置:首页|资讯

6-JSA二维数组

作者:拉小登Excel发布时间:2024-09-12


----------


▉  什么是二维数组?


表格中的数据有行、列之分,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函数的用法,后面再介绍。



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1