数组迭代和pop()

时间:2019-02-18 09:40:09

标签: javascript arrays ecmascript-6

我正在寻找一种简单的方法来遍历数组并生成如下所示的结果...如果有人可以向我展示如何以ES2015的方式执行此操作,那就更好了。

var numbers = ['one', 'two', 'three'];

/* Expected result */

/* 
  0: ['one', 'two', 'three'],
  1: ['one', 'two'],
  2: ['one']
*/

https://jsfiddle.net/minuwan/1eL83sbz

3 个答案:

答案 0 :(得分:2)

您可以使用slice来获取所需的输出,而不必使用pop,因为它将修改您的numbers数组

    var numbers = ['one', 'two', 'three'];
    var array = [];
    var arrayLength = numbers.length;
    
    for (var i = 0; i < arrayLength; i++) {
      array[i] =  numbers.slice(0, arrayLength - i);
    }
    
    console.log(array);

否则您将只使用带切片的地图

var numbers = ['one', 'two', 'three']
var array = numbers.map(function (_, i) {
    return numbers.slice(0, numbers.length - i);
});

console.log(array);

答案 1 :(得分:2)

您可以映射切片的数组。

var numbers = ['one', 'two', 'three'],
    result = numbers.map(function (_, i, a) {
        return a.slice(0, a.length - i);
    });

console.log(result);

答案 2 :(得分:0)

您可以使用生成器函数生成数组,以每次生成的方式删除最后一个元素:

const numbers = ['one', 'two', 'three'],
res = [...(function*(arr) {
  yield arr;
  while(arr.length > 1) yield (arr = arr.slice(0, -1)); 
})(numbers)];

console.log(res);