我正在寻找一种简单的迭代数组并生成如下结果的方法...如果有人能告诉我如何以ES2015方式执行此操作,那就更好了。
var numbers = ['one', 'two', 'three'];
/* Expected result */
/*
0: ['one', 'two', 'three'],
1: ['one', 'two'],
2: ['one']
*/
您可以映射切片数组。
var numbers = ['one', 'two', 'three'],
result = numbers.map(function (_, i, a) {
return a.slice(0, a.length - i);
});
console.log(result);
您可以使用切片来获取所需的输出而不是使用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);
您可以使用生成器函数并生成数组,在每个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);