Javascript 从包含方括号的数组中删除未定义的
下面你可以看到我正在处理的数组。最终我想删除重复的方括号,但现在我只是尝试删除数组第2行的Javascript 从包含方括号的数组中删除未定义的,javascript,node.js,arrays,Javascript,Node.js,Arrays,下面你可以看到我正在处理的数组。最终我想删除重复的方括号,但现在我只是尝试删除数组第2行的未定义的。我尝试了许多方法,但似乎无法过滤掉,这可能是由于额外的方括号吗?任何洞察都会很棒 服务器端阵列 代码 // filter out duplicates function arrUnique(arr) { var cleaned = []; platform.forEach(function(itm) { var unique
未定义的。我尝试了许多方法,但似乎无法过滤掉,这可能是由于额外的方括号吗?任何洞察都会很棒
服务器端阵列
代码
// filter out duplicates
function arrUnique(arr) {
var cleaned = [];
platform.forEach(function(itm) {
var unique = true;
cleaned.forEach(function(itm2) {
if (_.isEqual(itm, itm2)) unique = false;
});
if (unique) cleaned.push(itm);
});
return cleaned;
}
var duplicateRemoval = arrUnique(platform);
var filteredOut = duplicateRemoval.filter(e => e != null);
console.log(filteredOut);
要删除未定义的项,可以使用以下代码之一
如果
如果不想更改主数据
,可以使用查找
方法
此代码更改数据
并删除未定义的
项
var i = 0
while( i< data.length){
if(Array.isArray(data[i]) && data[i].length > 0 && data[i][0] !== undefined) {
i++;
} else {
data.splice(i , 1)
}
}
var i=0
而(i0&&data[i][0]!==未定义){
i++;
}否则{
数据拼接(i,1)
}
}
要删除未定义的
,只需使用过滤器即可。
(如果数组中有更多未定义的元素,则使用某些或每个方法相应地更改筛选器)
const数据=[
['[“windows”、“osx”、“linux”],
[未定义],
['[“windows”,“osx”]'],
['[“windows”]'],
['[“windows”、“osx”、“android”]],
['[“windows”,“linux”],
['[“windows”、“osx”、“linux”、“android”],
['[“web”]'],
['[“windows”、“linux”、“android”],
['[“windows”,“android”]'],
['[“android”]'],
['[“osx”]'],
];
const res=data.filter(([item])=>item);
console.log(res);
数组来自何处?你最好从它的源代码处修复它,我也很乐意!@LelioFaieta但不幸的是,它来自一个我正在提取的json,我无法控制它。如果你尝试对它使用一次json.parse会发生什么?那只是另一个数组。如果(&&&&&)然后删除该元素
(可以用.filter()
或.reduce()
谢谢!我不知道这一点。这非常有用!Array.isArray()
是不必要的,因为数据的所有元素都是数组。这是一种非常复杂的方法(参见sivakos的回答)这将有助于保护方法不受意外数据的影响。如果确定数据,可以将其删除
var data = [
[ '["windows","osx","linux"]' ],
[ undefined ],
[ '["windows","osx"]' ],
[ '["windows"]' ],
[ '["windows","osx","android"]' ],
[ '["windows","linux"]' ],
[ '["windows","osx","linux","android"]' ],
[ '["web"]' ],
[ '["windows","linux","android"]' ],
[ '["windows","android"]' ],
[ '["android"]' ],
[ '["osx"]' ]
]
var res = data.filter( item => Array.isArray(item) && item.length > 0 && item[0] !== undefined)
var i = 0
while( i< data.length){
if(Array.isArray(data[i]) && data[i].length > 0 && data[i][0] !== undefined) {
i++;
} else {
data.splice(i , 1)
}
}