将嵌套的整数数组转换为平面整数数组-javascript
Transform nested arrays of integers into a flat array of integers - javascript
我的问题的工作上下文是数据可视化。以这种方式将嵌套的整数数组转换为平面整数数组是正确的吗?
var inputArray = [[1, 2, [3]],4,[5, [6, [7,8],[9]]],10];
var inputArrayStr = inputArray.toString();
var outputArrayInt = JSON.parse("[" + inputArrayStr + "]");
console.log(outputArrayInt); // --> [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
实际上:
以Array#flat
和Infinity
作为所有级别的平面阵列的参数:
const
input = [[1, 2, [3]], 4, [5, [6, [7, 8], [9]]], 10],
output = input.flat(Infinity);
console.log(output);
老答案:
我建议为这项任务使用一个特殊的函数。
function flat(a) {
var b = [];
a.forEach(function (c) {
if (Array.isArray(c)) {
b = b.concat(flat(c));
} else {
b.push(c);
}
});
return b;
}
var inputArray = [[1, 2, [3]], 4, [5, [6, [7, 8], [9]]], 10],
outputArray = flat(inputArray);
document.write('<pre>' + JSON.stringify(outputArray, 0, 4) + '</pre>');
您可以使用array.prototype.concat.apply.逐步展开阵列
function flat(arr) {
var result = arr;
while(result.some(Array.isArray)) {
result = Array.prototype.concat.apply([], result);
}
return result;
}
console.log(flat([[1, 2, [3]], 4, [5, [6, [7, 8], [9]]], 10]));
// [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
解释上面的代码:
Array.prototype.concat.apply([], [[1, 2, [3]],4,[5, [6, [7, 8],[9]]], 10]) ;
基本上与相同
[].concat([1, 2, [3]], 4,[5, [6, [7, 8], [9]]], 10);
您可以简单地执行以下操作:
输入阵列:var inputArray = [[1, 2, [3]],4,[5, [6, [7,8],[9]]],10];
结果为字符串:
var stringResult=inputArray.toString();
字符串结果=>"1,2,3,4,5,6,7,8,9,10"
结果为数组:
var stringArray=stringResult.split(',');
var arrayResult=[];
for(var s in stringArray){
arrayResult.push(parseInt(s));
}
arrayResult=>[0,1,2,3,4,5,6,7,8,9]
现代
const flattenArray = (arr) => arr.reduce((prev, curr) => (Array.isArray(curr) ? prev.concat(flattenArray(curr)) : prev.concat(curr)), []);
相关文章:
- 效率:整数数组的一个子集中两个项之间的最大差值
- 在参数数组中传递整数数组
- 将整数数组从插件传递到JavaScript
- Javascript-如何快速构建不同正整数数组的二进制表示
- 函数来检查给定整数数组中给定位置的元素是否大于其两个邻域
- 如何将整数数组转换为人力车的 x/y 坐标
- 用于从包含最大求和的整数数组中提取子数组的算法
- 在 JQuery 中将整数数组转换为字符串数组
- Javascript - 将整数与整数数组进行比较
- Kadane 的最大子数组算法是否适用于所有正整数数组?
- 获取整数数组中的第一个最小可用整数键/ID
- Javascript - 通过添加两个元素来获取整数数组的所有组合
- 如何将 Javascript/Coffeescript 整数数组传递给我的 Rails 应用程序
- 如何将一维整数数组从 QML 发送到C++
- 在 Javascript 中根据步长拆分整数数组
- 将字符串数组转换为整数数组
- JavaScript 将整数数组转换为对象数组
- 使用 node-soap 传递一个整数数组
- 使用 Javascript 在本地存储中存储大型整数数组的最有效方法
- 如何拆分整数数组