解构语法数组项和余数

Destructuring syntax array item and remainder

我正在努力掌握解构赋值语法以完成以下任务:

我有一个项目数组,比如 const arr = ['a','b','c'],我想将其映射到另一个数组数组,其中每个项目都是从初始数组中挑选项目的余数,即 [['b','c'],['a','c'],['a','b']]

为此,我正努力做到

arr.map((_,i) => ([arr[i],...rest] = arr, rest))

还有那个returns

[['b', 'c'],['a', 'c'],['a', 'a']]

这显然不是,我需要的。我想,那是因为 arr 本身在这个过程中发生了某种变异。

我知道,我可以使用一些 splice() 或其他东西,但我试图弄清楚如何使它正常工作。

感谢您的帮助。

问题是您的代码总是会从数组中删除第一个元素。您可以将数组转换为对象,然后使用括号表示法 [] 指定要删除的索引。然后 return 个对象的值。

let arr = ['a','b','c'];

const res = arr.map((_,i) => {
  let {[i]:removed,...rest} = Object.assign({},arr);
  return Object.values(rest)
})
console.log(res)

您可以直接解构数组并删除实际索引处的项目。

var array = ['a', 'b', 'c'],
    result = array.map((_, i, { [i]: __, ...a }) => Object.values(a));

console.log(result); // ab ac bc