如何在Javascript / ES6中获得这样的输出

时间:2017-12-09 06:04:33

标签: javascript arrays multidimensional-array ecmascript-6

假设您有一个这样的数组:

//输入 [1,2,3,4,5,6,7]

如何编写将我们输出

的函数

//输出

 Array1 = [1]
 Array2 = [1,2]
 Array3 = [1,2,3]
 Array4 = [1,2,3,4]
 Array5 = [1,2,3,4,5]

//输出 1. [1,1,2,1,2,3,1,2,3,4...]

//试过这个

for (i = 0; i < arr.length; i++) { 
    arr = new Array(arr[i]);
}

4 个答案:

答案 0 :(得分:2)

您可以使用Array#mapArray#slice等功能轻松创建第一个功能,并使用Array#concatspread syntax来平展2D数组。

function prefixes(array) {
  return array.map((_, index) => array.slice(0, index + 1));
}

function flatten(array) {
  return [].concat(...array);
}

const output = prefixes([1,2,3,4,5,6,7]);
console.log(output);
console.log(flatten(output));

答案 1 :(得分:1)

您可以通过使用spread syntax ...切片所需部分来缩小数组。

&#13;
&#13;
var array = [1, 2, 3, 4, 5, 6, 7],
    result = array.reduce((r, _, i, a) => [...r, ...a.slice(0, i + 1)], []);

console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

答案 2 :(得分:0)

使用forEach和for循环

&#13;
&#13;
var arr = [1, 2, 3, 4, 5, 6, 7];
var arrys = [];
//lopping over the array, and creating the new array and putting values
// equal to number of index
arr.forEach(function(item, index) {
  var tempArray = [];
  for (var m = 0; m <= index; m++) {
    tempArray.push(arr[m])
  }
  arrys.push(tempArray)
})
console.log(arrys)
// flat the previously created array
var flatten = [];
arrys.forEach(function(item) {
  item.forEach(function(item2) {
    flatten.push(item2)
  })
})
console.log(flatten)
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您只需使用两个嵌套的for循环

即可

&#13;
&#13;
let arr = [1, 2, 3, 4, 5, 6, 7];
function foo(arr) {
    let rarr = [];//result array
    for (let i = 0; i < arr.length; i++) {
        let a = [];//array[i]
        for (let j = 0; j <= i; j++) {
            a.push(arr[j]);
        }
        rarr.push(a);
    }
    return rarr;
}
console.log(foo(arr));
&#13;
&#13;
&#13;