【GAS】수치형의 2차원 배열을 선언하고 싶다
개요
스프레드시트에서 숫자를 받고 배열에 뱅뱅을 더해가고 싶을 때 선언한 빈 배열에 더해도 숫자로 취급되지 않고 계산되지 않는다.
처음부터 수치형으로 2차원 배열을 선언하고 싶다~라고 이야기.
스포일러
처음부터 수치형으로 선언하는 방법을 모르기 때문에, 요소 모두에 「0」이 들어간 2차원 배열을 만드는 형태에 착지^^;
비교적 스마트하게 기술할 수 있었다(라고 생각한다) 때문에, 메모가 테라 투고.
※제대로 된 방법이 있을지도 모르지만, 무교양이므로 이번 방법으로 해결 (웃음)
토리마 역기라면 이런 느낌?
function arrays() {
//5×3の要素すべてにゼロが入った配列
var arrays = [[0,0,0,0,0],
[0,0,0,0,0],
[0,0,0,0,0]];
//出来栄えを確認
Logger.log('\n', arrays, '\n');
//全ての要素に1を足してみる
for(var i=0; i<3; i++){
for(var j=0; j<5; j++){
arrays[i][j] += 1;
}
}
//数値型なので足し算OK!
Logger.log('\n', arrays);
}
요점은 이렇게 말하는 것이지만, 왠지 멋지지 않고, 요소수가 많을 때의 기술이 귀찮은 것 같다.
성공 예 이전 실패 예
· 빈 배열 만들기
var array = Array(5);
· 모든 요소에 0array.fill(0);
· 다른 배열로 푸시 arrays.push(array);
갈 수 없습니까? 라고 생각해 쓴 것이 이쪽.function arrays() {
var arrays = [];
var array = Array(5).fill(0);
for(var k=0; k<3; k++){
arrays.push(array);
}
Logger.log('\n', arrays, '\n');
for(var i=0; i<3; i++){
for(var j=0; j<5; j++){
arrays[i][j] += 1;
}
}
Logger.log('\n', arrays);
}
완성의 외형만은 좋았지만, 모든 요소에 1을 더했을 때의 거동이 이상하다. 왠지 모든 요소에 3회씩 더해져 있는가? ? ?
같은 배열이 3회 나란히 표시되고 있을 뿐 같은 차원이 왜곡된다.
성공!
그렇다면 배열의 선언도 for문 안에 넣고 반복할 때마다 재선언시키면 어떨까.
function arrays() {
var arrays = [];
for(var k=0; k<3; k++){
var array = Array(5).fill(0);
arrays.push(array);
}
Logger.log('\n', arrays, '\n');
for(var i=0; i<3; i++){
for(var j=0; j<5; j++){
arrays[i][j] += 1;
}
}
Logger.log('\n', arrays);
}
잘 갔던 것 같아요^^)b
요약
「x개」×「y개」의 배열을 가지는 수치형의 2차원 배열을 선언하는, 단 하나의 선명한 방법은・・・
var arrays = [];
for(var i=0; i<y; i++){
var array = Array(x).fill(0);
arrays.push(array);
}
단 하나도, 별로 하고 있다고도 생각하지 않지만, 상당히 심플하게 완성되었다고 생각한다(자화 자찬).
오시마
Reference
이 문제에 관하여(【GAS】수치형의 2차원 배열을 선언하고 싶다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/YasumiYasumi/items/887ca15431de28322438텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)