如何将深度多维数组转换为一维数组-Javascript
How to convert a deep multi dimensional array to a single dimensional array - Javascript
我有一个巨大的多维数组,我想把它转换成一维数组,真正的问题是这个数组是动态的,它可以是它想要的深度,我事先不确定。在此处张贴示例
var myArray = [
"hello",
["berries", "grouped", 88, "frozen"],
[
"stuff",
[
"mash",
["melon", "freeze", 12, "together"],
"people"
],
"car"
],
[
"orange",
"code",
84,
["mate", "women", "man"]
],
["bus", "car", 345, "lorry"],
"world"
];
应该将其转换为类似的一维阵列
["hello","berries","grouped",88,"frozen","stuff","....."]
只需尝试:
var flat = myArray.join().split(',');
输出:
["hello", "berries", "grouped", "88", "frozen", "stuff", "mash", "melon", "freeze", "12", "together", "people", "car", "orange", "code", "84", "mate", "women", "man", "bus", "car", "345", "lorry", "world"]
您可以编写一个walker函数:
function walkLeaves(arr, fn)
{
for (var i = 0; i < arr.length; ++i) {
if (typeof arr[i] == 'object' && arr[i].length) { // simple array check
walkLeaves(arr[i], fn);
} else {
fn(arr[i], i); // only collect leaves
}
}
}
然后用它来构建最终的阵列:
var final = [];
walkLeaves(arr, function(item, index) {
final.push(item);
});
演示
不是一个纯JavaScript解决方案,但您可以使用undercore.js:
_.flatten(myArray)
他们就是这样做的:
var flatten = function(input, shallow, output) {
if (shallow && _.every(input, _.isArray)) {
return concat.apply(output, input);
}
each(input, function(value) {
if (_.isArray(value) || _.isArguments(value)) {
shallow ? push.apply(output, value) : flatten(value, shallow, output);
} else {
output.push(value);
}
});
return output;
};
正常循环+递归:
var flattened = [];
function flatten(a){
a.forEach(function(e){
if(toString.call(e) === "[object Array]") flatten(e);
else flattened.push(e);
});
}
flatten(myArray);
相关文章:
- jQuery对象从html表中查询为两个一维数组,用于Chartist图表
- 如何在Java Script中比较二维数组和一维数组,并将常见数据存储在另一个数组中
- 如何在javascript中使用2个一维数组创建层次结构树
- 我需要帮助在 javascript 中将 JSON 数据转换为 3 级多维数组
- PHP json_encode不适用于一维数组
- 如何在一维数组中存储 3 个随机数,然后在 Javascript 中收到警报
- 将字符串的一维数组转换为二维数组
- Javascript使用map从一维数组创建一个二维数组
- PHP 循环通过多维到一维数组
- 使用JavaScript将对象的多维数组转换为一维数组
- JavaScript在一维关联数组中转换多维数组
- 用一维数组过滤多维数组
- 在JS中根据需要的组大小将一维数组转换为多维数组的更好方法
- 如何在JavaScript中将2个一维数组连接成1个二维数组
- 如何将深度多维数组转换为一维数组-Javascript
- 使用JavaScript将一维数组转换为二维数组
- D3.js:通过 d3 加载平面一维数组.csv导致“类型错误:组数据未定义”/使用 D3.js 加载多个 CSV 文件
- 如何使用一维数组形成 JSON 数组
- 比较二维数组和一维数组并删除匹配项(JavaScript)
- 将一维数组转换为二维数组