如何在具有偏移号的数组上使用解构

时间:2019-01-18 01:27:58

标签: javascript ecmascript-6

我有一组对象,这些对象是来自CMS的动态数据。我希望能够根据偏移量对它们进行拆分。我尝试使用解构,但是在使用过程中出现了错误。

  

未捕获的SyntaxError:rest元素必须是最后一个元素

我首先尝试了这种简单的设置,可以将最后一个项目与firstItems分开,但是我发现您不能使用像这样的解构。

const offset = 2;
const cmsData = [{..},{..},{..},{..}]
firstItems = [{..},{..}];
last = [{..},{..}];

我想做的是有一个函数,可以在其中传递一个偏移值,这样它将使我得到的第一个项目直到偏移号,然后最后是偏移号项目。例如。

npm

如果offset = 3,则最后一个将是最后3个。

3 个答案:

答案 0 :(得分:2)

您可以将Array.slice()negative offset结合使用:

const offset = 3;
const cmsData = [1, 2, 3, 4];
const firstItems = cmsData.slice(0, -offset);
const lastItems = cmsData.slice(-offset);

console.log(firstItems);

console.log(lastItems);

答案 1 :(得分:0)

只需使用Array.prototype.slice

firstItems = cmsData.slice(0, cmsData.length - offset);
last = cmsData.slice(cmsData.length - offset);

答案 2 :(得分:0)

您只能在数组的 end 中使用这种语法-如您所见,它在一开始就不起作用。请改用.slice

const cmsData = [0, 1, 2, 3];

const firstItems = cmsData.slice(0, cmsData.length - 1);
const last = cmsData[cmsData.length - 1];
console.log(firstItems);
console.log(last);

或者,从末尾获得多个项目:

const cmsData = [0, 1, 2, 3];
const offset = 2;

const firstItems = cmsData.slice(0, cmsData.length - offset);
const last = cmsData.slice(cmsData.length - offset);
console.log(firstItems);
console.log(last);