我正在尝试掌握解构赋值语法以完成以下任务:
我有一个项目数组,例如const arr = ['a','b','c']
,我想映射到另一个数组数组,其中每个项目都是从初始数组(即[['b','c'],['a','c'],['a','b']]
)中挑选项目的剩余部分。 >
为此,我正在尝试
arr.map((_,i) => ([arr[i],...rest] = arr, rest))
然后返回
[['b', 'c'],['a', 'c'],['a', 'a']]
显然不是我需要的。我猜这是因为arr
本身在此过程中发生了某种突变。
我知道,我可以使用一些splice()
或其他东西,但是我试图弄清楚如何使其正常工作。
感谢您的帮助。
答案 0 :(得分:7)
您可以直接对数组进行解构并在实际索引处删除该项目。
var array = ['a', 'b', 'c'],
result = array.map((_, i, { [i]: __, ...a }) => Object.values(a));
console.log(result); // ab ac bc
答案 1 :(得分:2)
问题是您的代码将始终从数组中删除第一个元素。您可以将数组转换为对象,然后使用方括号[]
指定要删除的索引。然后返回对象的值。
let arr = ['a','b','c'];
const res = arr.map((_,i) => {
let {[i]:removed,...rest} = Object.assign({},arr);
return Object.values(rest)
})
console.log(res)