是否有方法将数组拆分为使用javascript不包含空值的数组(不开发函数)......
以下是我想要的例子:
输入:
var a = [1, 2, 3, null, 2, null,null, 4]
输出:
[[1, 2, 3], [2], [4]]
谢谢
答案 0 :(得分:3)
问题
“是否有可以使用的函数来构建我的数组”,
答案是
“否,因为您的需求过于具体”。
但自己做这件事并不难。这是一个解决方案(我在结尾处使用null
进行了一个不那么微不足道的输入,并且连续null
更具说明性):
var a = [null, 1, 2, 3, null, 2, null, null, 4, null];
var b = []; // result
for (var arr, i=0; i<a.length; i++) {
if (a[i]===null) {
arr=null;
} else {
if (!arr) b.push(arr=[]);
arr.push(a[i]);
}
}
document.body.textContent = JSON.stringify(b); // just print the result
正如你所看到的,没有什么美妙或神奇,只是一个乏味的迭代。
答案 1 :(得分:2)
您可以使用reduce
:
[1, 2, 3, null, 2, null, 4].reduce(function(arr, val) {
if(val === null) arr.push([]);
else arr[arr.length-1].push(val);
return arr;
}, [[]]);
答案 2 :(得分:1)
库中没有可以满足您期望的功能。但如果你简单地接近它,你可以使用下一个方法
var a = [1, 2, 3, null, 2, null, 4]
var result = [], temp = [];
for(var i = 0; i < a.length; i++) {
if (a[i] === null) {
if (temp.length == 0) continue;
result.push(temp);
temp = [];
}
else {
temp.push(a[i]);
}
}
if (temp.length != 0) result.push(temp);
// use your result, it gives [[1, 2, 3], [2], [4]]
我添加了一些功能来防止双null
出现问题,从null
开始到null
结束。下一步是将上述代码片段包装在函数中,使用a
作为参数,使用result
作为返回值。这甚至可以毫无问题地处理a = []
。