как использовать деструктуризацию в массиве с номером смещения - PullRequest
0 голосов
/ 18 января 2019

У меня есть массив объектов, которые являются динамическими данными из CMS. Я хочу иметь возможность разделить их на основе номера смещения. Я попытался использовать деструктуризацию, но получил ошибку, как я ее использовал.

uncaught SyntaxError: элемент rest должен быть последним элементом

Сначала я попробовал эту простую установку, где я мог отделить последний элемент от первых элементов, но я обнаружил, что вы не можете использовать деструктуризацию, как это.

const cmsData = [{..},{..},{..},{..}]
const arr = [...firstItems, last] = cmsData

То, что я пытаюсь сделать, - это иметь функцию, в которой я могу передать ему значение смещения, чтобы оно дало мне первые элементы вплоть до номера смещения, а затем последним будут элементы смещения номера. например.

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

Если смещение = 3, последним будет последний 3.

Ответы [ 3 ]

0 голосов
/ 18 января 2019

Синтаксис такого типа можно использовать только в конце массива - в начале он не работает, как видите. Используйте .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);
0 голосов
/ 18 января 2019

Вы можете использовать Array.slice() с отрицательным смещением :

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);
0 голосов
/ 18 января 2019

Просто используйте Array.prototype.slice :

firstItems = cmsData.slice(0, cmsData.length - offset);
last = cmsData.slice(cmsData.length - offset);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...