Как деструктурировать этот массив - PullRequest
5 голосов
/ 14 июля 2020

Как деструктурировать width и height, если они были объявлены раньше?

function test() {
  let height
  let width

  const viewBox = '0 0 24 24'
  const sizeArr = viewBox.split(' ')

  // ESLint is telling me to destructure these and I don't know how
  width = sizeArr[2]
  height = sizeArr[3]
}

Ответы [ 4 ]

10 голосов
/ 14 июля 2020

Вы можете использовать запятую, чтобы игнорировать некоторые элементы массива, которые вам не нужны:

const [,,width,height] = sizeArr;

function test() {
  const viewBox = '0 0 24 24'
  const sizeArr = viewBox.split(' ')
  const [,,width,height]=sizeArr;
  console.log(width,height);
}
test();

Если вам по какой-то причине нужно сохранить объявления let в верхней части функции, вы можете удалить const из деструктуризации. Обратите внимание, что вам понадобится точка с запятой в конце предыдущей строки из-за автоматической c вставки точки с запятой.

[,,width,height] = sizeArr;

function test() {
  let height;
  let width;
  const viewBox = '0 0 24 24';
  const sizeArr = viewBox.split(' ');
  [,,width,height]=sizeArr;
  console.log(width,height);
}
test();

См. Также: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Ignoring_some_returned_values

Если вам действительно нужно каждое значение, объявите имя для каждого:

const [var1,var2,width,height] = sizeArr;

function test() {
  const viewBox = '0 0 24 24'
  const sizeArr = viewBox.split(' ')
  const [var1,var2,width,height]=sizeArr;
  console.log(var1,var2,width,height);
}
test();
3 голосов
/ 14 июля 2020

const [first, second, width, height] = sizeArr;

2 голосов
/ 14 июля 2020

Вы можете просто деструктурировать массив до уже объявленных переменных:

let height;
let width;

const viewBox = '0 0 24 24';
const sizeArr = viewBox.split(' ');

[width, height] = sizeArr.slice(2);
1 голос
/ 14 июля 2020
let [,,width,height] = arr;
console.log('%s %s', width, height);
...