如何将单维数组转换为JS

时间:2018-03-16 12:22:31

标签: javascript arrays matrix multidimensional-array vector

我想要一个列向量作为我的输出,而是获得一个单维数组。请检查小提琴中的代码。我做错了什么?

我当前和预期的输出是:

当前输出:数组[ 0, 1 ]数组[ 5, 10 ]

预期输出:数组[ 0 ]数组[ 1 ]数组[ 5 ]数组[ 10 ]

请检查浏览器控制台。

如何获得预期输出?

Js Fiddle:https://jsfiddle.net/4o1dj1uw/2/

代码:

this.b = [[[0,1]],[[5,10]]];
function convertarray(arrToConvert) {
   //it will convert a matrix in array
   var newArr = [];
   for (var i = 0; i < arrToConvert.length; i++) {
        newArr = newArr.concat(arrToConvert[i]);
   }
   return newArr;
 }

console.log(...convertarray(this.b))

2 个答案:

答案 0 :(得分:2)

几乎就在那里,你需要进入最深的阵列。

另一种方法是使用递归。

this.b = [[[0,1]],[[5,10]]];
function convertarray(arrToConvert) {
   //it will convert a matrix in array
   var newArr = [];
   for (var i = 0; i < arrToConvert.length; i++) {
        if (Array.isArray(arrToConvert[i])) {
          newArr = newArr.concat(convertarray(arrToConvert[i]));
        } else {
          newArr.push([arrToConvert[i]]);
        }
   }
   return newArr;
 }

console.log(JSON.stringify(convertarray(this.b)))
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:1)

通过convertarray()推送两次:

console.log(convertarray(convertarray(this.b)))

如果你想获得这些项目的数组,你可以这样做:

console.log(...convertarray(convertarray(this.b)).map(x => [x]));

结果

[0] [1] [5] [10]