Как деструктурировать этот массив
Как мне деструктурировать 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 ответа
Решение
Вы можете использовать запятую, чтобы игнорировать определенные элементы массива, которые вам не нужны:
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
от деструктуризации. Обратите внимание, что вам понадобится точка с запятой в конце предыдущей строки из-за автоматической вставки точки с запятой.
[,,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
Если вам нужно каждое значение, объявите имя для каждого из них:
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();
Вы можете просто разложить массив на уже объявленные переменные:
let height;
let width;
const viewBox = '0 0 24 24';
const sizeArr = viewBox.split(' ');
[width, height] = sizeArr.slice(2);
let [,,width,height] = arr;
console.log('%s %s', width, height);