0
this question에 응답하려고 시도하는 동안 이상한 동작이 발견되었습니다.유니온 함수 - 사용자 정의 함수에서 인수 전달 - Google 스프레드 시트
여기 내 코드입니다 :
이function remove(val, array){
var res = new Array();
for(var i=0; i<array.length; i++){
if(array[i] != val){
res.push(array[i]);
}
}
return res;
}
//we assume that there is no duplicates values inside array1 and array2
function my_union(array1, array2){
var longuer;
var shorter;
var arrayRes = new Array();
if(array1.length < array2.length){
longuer = array2;
shorter = array1;
} else {
longuer = array1;
shorter = array2;
}
for(var i=0; i<longuer.length; i++){
arrayRes.push(longuer[i]);
shorter = remove(longuer[i], shorter);
}
for(var i=0; i<shorter.length; i++){
arrayRes.push(shorter[i]);
}
return arrayRes;
}
function test(){
Browser.msgBox(my_union([1,2,3], [1,2]));
}
메시지 상자가 명확 1,2,3라고하지만 같은 값으로 스프레드 시트 내에서이 함수를 호출 할 때, 그것은 왜, 중복 된 값을 삭제하지?
** 편집 : ** 엔리케의 대답에 감사합니다, 여기에 코드입니다 :
function remove(val, array){
var res = new Array();
for(var i=0; i<array.length; i++){
if(array[i] != val){
res.push(array[i]);
}
}
return res;
}
function matFlattener(matrix){
var array = new Array();
for(var i=0; i<matrix.length; i++){
for(var j=0; j<matrix[i].length; j++){
array.push(matrix[i][j]);
}
}
return array;
}
function my_union(matrix1, matrix2){
//assert no duplicate values in matrix1 and matrix2
var longuer;
var shorter;
var array1 = matFlattener(matrix1);
var array2 = matFlattener(matrix2);
var arrayRes = new Array();
if(array1.length < array2.length){
longuer = array2;
shorter = array1;
} else {
longuer = array1;
shorter = array2;
}
for(var i=0; i<longuer.length; i++){
arrayRes.push([longuer[i]]);
shorter = remove(longuer[i], shorter);
}
for(var i=0; i<shorter.length; i++){
arrayRes.push([shorter[i]]);
}
return arrayRes;
}
정말로 묻고있는 것을 더 잘 반영하기 위해이 질문의 제목을 변경하십시오. –
12 개 단어로 물어 보았습니다. – Zelwina