数组迭代和pop()

问题描述 投票:0回答:3

我正在寻找一种简单的迭代数组并生成如下结果的方法...如果有人能告诉我如何以ES2015方式执行此操作,那就更好了。

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

/* Expected result */

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

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

javascript arrays ecmascript-6
3个回答
2
投票

您可以映射切片数组。

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

console.log(result);

2
投票

您可以使用切片来获取所需的输出而不是使用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);

0
投票

您可以使用生成器函数并生成数组,在每个yield中删除最后一个元素:

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

console.log(res);
© www.soinside.com 2019 - 2024. All rights reserved.