我正在寻找一种简单的方法来遍历数组并生成如下所示的结果...如果有人可以向我展示如何以ES2015的方式执行此操作,那就更好了。
var numbers = ['one', 'two', 'three'];
/* Expected result */
/*
0: ['one', 'two', 'three'],
1: ['one', 'two'],
2: ['one']
*/
答案 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);