我具有下面的函数,如果行中的每个值都相同,则将数组中的值设置为“”,然后从数组中删除空白值
如果我有
arr = [[[a],[a]],[[a],[b]],[[a],[c]],[[b],[a]],[[b],[b]],[[b],[c]],[[c],[a]],[[c],[b]],[[c],[c]]]
我最终以
[[[[a],[b]],[[a],[c]],[[b],[a]],[[b],[c]],[[c],[a]],[[c],[b]]]]
但是,如果我的数组具有n个维度而不是2个维度
我不知道如何动态地写这部分
for (var i = 0; i < values.length; i++) {
if (values[i][0] == values[i][1]) {
values[i][0] = '';
values[i][1] = '';
}
}
以便if语句正在测试
values[i][0] == values[i][1]... ==values[i][n]
谢谢
我的功能
function removeEmptyRng(shtName, rng, outputRng) {
var sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(shtName);
var lr = sht.getLastRow();
var range = sht.getRange(rng + lr);
var values = range.getValues();
for (var i = 0; i < values.length; i++) {
if (values[i][0] == values[i][1]) {
values[i][0] = '';
values[i][1] = '';
}
}
//Remove Empty values
values = values.filter(function(a) {return a.filter(Boolean).length > 0;});
if (outputRng == true)
{sht.getRange(1,2,values.length,values[0].length).setValues(values)};
return values
}
答案 0 :(得分:1)
您可以立即过滤掉整行中的不等式...基本上是说:“如果其中一个值不等于该行的第一个,则保留一行” =>并非所有值都相等。
values = values.filter(
function(row) {
return row.some(
function(val) {
return val != row[0]});
});