如何解构这个数组

5
如果之前声明过widthheight,我该如何进行解构?
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]
}

3
[ , , 宽度 , 高度] = sizeArr. - Zen_Web
4个回答

10
您可以使用逗号来忽略数组中不需要的某些元素。
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/zh-CN/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();


1
很好,我不知道你可以留空白。 - Adrian Brand
1
@RossMoody 你会有冲突。移除 let 声明。你不需要它们。 - Sebastian Simon
@RossMoody,我已经更新了我的答案,以防你需要let声明。 - Unmitigated
@user4642212,你实际上是我需要的答案。这是一个精简版的大函数,其中我在上层作用域中声明了那些变量。分号就是我遇到错误的原因。非常感谢! - Ross Moody
1
@RossMoody 如果是这样,你应该在一开始就提供更多的上下文。 - Unmitigated
显示剩余4条评论

3

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


2
您可以直接将数组解构赋值给已声明的变量:
let height;
let width;

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

[width, height] = sizeArr.slice(2);

1
let [,,width,height] = arr;
console.log('%s %s', width, height);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接