Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将嵌套的整数数组转换为平面整数数组-javascript_Javascript_Arrays_Database_Dashboard - Fatal编程技术网

将嵌套的整数数组转换为平面整数数组-javascript

将嵌套的整数数组转换为平面整数数组-javascript,javascript,arrays,database,dashboard,Javascript,Arrays,Database,Dashboard,我问题的工作背景是数据可视化。 用这种方法将嵌套的整数数组转换为平面整数数组是正确的吗 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,

我问题的工作背景是数据可视化。 用这种方法将嵌套的整数数组转换为平面整数数组是正确的吗

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 ]

我建议为这项任务使用一个特殊的函数

功能平面(a){
var b=[];
a、 forEach(函数(c){
if(数组isArray(c)){
b=b.concat(平面(c));
}否则{
b、 推(c);
}
});
返回b;
}
变量输入阵列=[[1,2,3]],4,5,6,7,8,9]]],10],,
输出阵列=平坦(输入阵列);

document.write(''+JSON.stringify(outputArray,0,4)+'')您只需执行以下操作:


输入数组:
var-inputArray=[[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));
}
stringResult=>“1,2,3,4,5,6,7,8,9,10”

结果为数组:

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 ]

arrayResult=>[0,1,2,3,4,5,6,7,8,9]

您可以使用array.prototype.concat.apply逐步展开阵列

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);
基本上与:

const flattenArray = (arr) => arr.reduce((prev, curr) => (Array.isArray(curr) ? prev.concat(flattenArray(curr)) : prev.concat(curr)), []);
现代方式


“用这种方法将嵌套的整数数组转换为平面整数数组是正确的吗?”预期结果是什么?[[1,2,3]],4,5,6,7,8,9]],10]-->[1,2,3,4,5,6,7,8,9,10]很好,它可以工作,但是,根据使用位置的不同,您可能希望避免对此类工作进行字符串操作。如果您的数组只有数字,而没有逗号,则可以使用json.stringify,然后替换所有[and]应该可以工作的字符串。
inputArray.toString().split(',)
const flattenArray = (arr) => arr.reduce((prev, curr) => (Array.isArray(curr) ? prev.concat(flattenArray(curr)) : prev.concat(curr)), []);