【问题标题】:How to get output like this in Javascript/ES6如何在 Javascript/ES6 中获得这样的输出
【发布时间】:2017-12-09 06:04:32
【问题描述】:

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

//输入 [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]);
}

【问题讨论】:

标签: javascript arrays multidimensional-array ecmascript-6


【解决方案1】:

您可以使用Array#mapArray#slice 等函数轻松创建第一个函数,并使用Array#concatspread syntax 来展平二维数组。

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));

【讨论】:

    【解决方案2】:

    您可以通过使用spread syntax ... 对所需部分进行切片来减少数组。

    var array = [1, 2, 3, 4, 5, 6, 7],
        result = array.reduce((r, _, i, a) => [...r, ...a.slice(0, i + 1)], []);
    
    console.log(result);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      【解决方案3】:

      使用forEach 和for循环

      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)

      【讨论】:

        【解决方案4】:

        您可以简单地通过使用两个这样的嵌套 for 循环来做到这一点,

        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));

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-05-04
          • 1970-01-01
          • 2013-04-03
          • 2020-08-05
          • 2017-09-27
          • 2021-08-26
          • 1970-01-01
          • 2017-10-18
          相关资源
          最近更新 更多