3 回答

TA贡献1812条经验 获得超5个赞
当您将行星传播到您的第二个阵列中时,您会将阵列中的所有元素planets放入第二个阵列中,因此:
["Mercury", "Earth", ...planets, "Saturn"];
...评估为:
["Mercury", "Earth", "Mercury", "Earth", "Venus", "Mars", "Pluto", "Saturn", "Saturn"];
然后你从这个数组中解构第一个和第二个元素给你"Mercury"和"Earth"。然后使用 rest 模式...rest检索剩余的元素(即从索引 2 开始的元素)并将它们存储在名为 的数组中rest。因此,您的rest数组包含上面数组中的所有元素,不包括第一个和第二个元素:
["Mercury", "Earth", "Venus", "Mars", "Pluto", "Saturn", "Saturn"]
要获得预期的输出,您可以通过忽略前两个元素来破坏第一个数组:
const [,,...rest] = ["Mercury", "Earth", "Venus", "Mars", "Pluto", "Saturn"];
console.log(rest);

TA贡献1806条经验 获得超8个赞
您可以有选择地传播。当您传播...planets它时,它将所有值从行星数组复制到您正在创建的数组中。
您可以在传播之前简单地使用切片。
var planets = ["Mercury", "Earth", "Venus", "Mars", "Pluto", "Saturn"];
var [first, second, ...rest] = ["Mercury", "Earth", ...planets.slice(2, planets.length - 1), "Saturn"];
console.log(first);
console.log(second);
console.log(rest)

TA贡献1828条经验 获得超6个赞
您可以使用Set()
Set 对象允许您存储唯一值
var planets = ["Mercury", "Earth", "Venus", "Mars", "Pluto", "Saturn"];
var [first, second, ...rest] = new Set(["Mercury", "Earth", ...planets, "Saturn"]);
console.log(first);
console.log(second);
console.log(rest);
添加回答
举报