从数组中获取第一个和最后一个元素(以及拆分所有其余元素)

Avatar of Chris Coyier
Chris Coyier

我最近需要在 JavaScript 中从数组中获取第一个元素。嗯……让我思考一下。我记得.pop()用于从数组中获取最后一个元素,如下所示

const arr = ["This", "Little", "Piggy"];
const first = arr.pop();
console.log(first);
// "Piggy"

那么.pop()的反义词是什么?(请暂停一下,进行简单的网络搜索……)啊哈!它是.shift()!

const arr = ["This", "Little", "Piggy"];
const first = arr.shift();
console.log(first);
// "This"

(请注意,arr[0]可能是获取第一个元素最简单的方法,但请在这里配合一下。此外,有时将从数组中切除的部分保持为数组会很好,所以让我们继续查看……)

但是当我伸手去拿这个奇妙的小辅助方法时,我停住了!并非所有人都遇到过这个问题,因为这与一般数组无关,而与某些特定环境下的数组有关。这是我在正在处理的代码库中看到的情况

问题在于我试图从一个不允许我操作的数组中提取这个元素。在我的情况下,我使用的是Apollo GraphQL,我获得的数据采用只读属性的形式。

只读?我只是想从数组中获取第一个元素:我没有改变任何东西。或者我改变了吗?(我改变了。)事实证明,.pop().shift()分别会返回最后一个和第一个元素,但它们也会操作原始数组。而我的数组是不可操作的。

我真正需要的是从一个数组中获取第一个元素和所有其余元素,并将它们放到一个新数组中,同时保持原始数组不变.slice()数组方法在这里很好地帮助了我。它不会干扰原始数组。

这将很好地满足我们的需求

const arr = ["This", "Little", "Piggy"];
const first = arr.slice(0, 1);
const the_rest = arr.slice(1);console.log(first); // ["This"]
console.log(the_rest); // ["Little", "Piggy"]

嘿,这正是我需要的!

需要一种简单的方法来找到所需的正确数组方法?尝试使用 Sarah Drasner 的 JavaScript 数组浏览器