调用另一个函数来清理数组
Calling Another Function to Clean An Array
我有一个数组,想要清理它。我有一个函数可以从 argument/array 中删除所有空白(或“”)值。但是,当我使用第二个函数调用该函数时,数组未 cleaned。我哪里错了?
这个功能很好用。它清理阵列。
function cleanArray(myArray) {
var newArray = [];
for (var i = 0; i < myArray.length; i++) {
if (myArray[i]) {
newArray.push(myArray[i]);
}
}
myArray = newArray;
Logger.log(myArray)
}
下面的函数调用上面的函数,并通过上面的函数记录 cleaned 数组。但是,当我尝试记录已经清理过的数组时,它只会记录原始的混乱数组。
function testCleanArray(){
var arr = [1, 2,, 3,, 3,,,,,, 4,, 4,, 5,, 6,,,,]
cleanArray(arr);
Logger.log(arr)
}
这是我 运行 日志(Google 表格脚本编辑器)
时得到的结果
[18-02-14 00:23:16:415 PST] [1.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 6.0]
[18-02-14 00:23:16:415 PST] [1.0, 2.0, null, 3.0, null, 3.0, null, null, null, null, null, 4.0, null, 4.0, null, 5.0, null, 6.0, null, null, null]
谢谢
myArray = newArray;
此行将函数 cleanArray
上下文中的 myArray
引用更改为您新创建的引用。
它无权更改 arr
保存的数组,该数组是在另一个函数中定义的。
您可以选择两条路:
return
新创建的数组并将其分配给 cleanArray
之外的变量(我的首选方法)
- 更改
cleanArray
以改变您传递给它的数组,例如使用 splice
、pop
和 shift
.
对于选项 1,修复方法是:
function cleanArray(myArray) {
var newArray = [];
/* your for loop here */
return newArray;
};
function testCleanArray(){
var arr = [1, 2,, 3,, 3,,,,,, 4,, 4,, 5,, 6,,,,]
arr = cleanArray(arr);
}
请注意,使用 Array.prototype.filter
编写清理函数还有一种更简单的方法。我检查了 undefined
以确保 0
值也包含在内。
var myArray = [1, 2,, 3,, 3,,,,,, 4,, 4,, 5,, 6,,,,];
var arr = myArray.filter(x => x !== undefined);
console.log(arr);
我有一个数组,想要清理它。我有一个函数可以从 argument/array 中删除所有空白(或“”)值。但是,当我使用第二个函数调用该函数时,数组未 cleaned。我哪里错了?
这个功能很好用。它清理阵列。
function cleanArray(myArray) {
var newArray = [];
for (var i = 0; i < myArray.length; i++) {
if (myArray[i]) {
newArray.push(myArray[i]);
}
}
myArray = newArray;
Logger.log(myArray)
}
下面的函数调用上面的函数,并通过上面的函数记录 cleaned 数组。但是,当我尝试记录已经清理过的数组时,它只会记录原始的混乱数组。
function testCleanArray(){
var arr = [1, 2,, 3,, 3,,,,,, 4,, 4,, 5,, 6,,,,]
cleanArray(arr);
Logger.log(arr)
}
这是我 运行 日志(Google 表格脚本编辑器)
时得到的结果[18-02-14 00:23:16:415 PST] [1.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 6.0]
[18-02-14 00:23:16:415 PST] [1.0, 2.0, null, 3.0, null, 3.0, null, null, null, null, null, 4.0, null, 4.0, null, 5.0, null, 6.0, null, null, null]
谢谢
myArray = newArray;
此行将函数 cleanArray
上下文中的 myArray
引用更改为您新创建的引用。
它无权更改 arr
保存的数组,该数组是在另一个函数中定义的。
您可以选择两条路:
return
新创建的数组并将其分配给cleanArray
之外的变量(我的首选方法)- 更改
cleanArray
以改变您传递给它的数组,例如使用splice
、pop
和shift
.
对于选项 1,修复方法是:
function cleanArray(myArray) {
var newArray = [];
/* your for loop here */
return newArray;
};
function testCleanArray(){
var arr = [1, 2,, 3,, 3,,,,,, 4,, 4,, 5,, 6,,,,]
arr = cleanArray(arr);
}
请注意,使用 Array.prototype.filter
编写清理函数还有一种更简单的方法。我检查了 undefined
以确保 0
值也包含在内。
var myArray = [1, 2,, 3,, 3,,,,,, 4,, 4,, 5,, 6,,,,];
var arr = myArray.filter(x => x !== undefined);
console.log(arr);