【问题标题】:How to resolve the esline error - " Use object destructuring"如何解决 esline 错误——“使用对象解构”
【发布时间】:2020-01-25 16:41:36
【问题描述】:

我先初始化空变量

let a = "";
let b = "";
let c = "";

然后调用 api 并在获取数据后将 api 响应中的值分配给变量。如果没有得到任何数据,那么这将是空的。

假设 dataArray 是我得到响应的数组。

所以,我所做的是:

dataArray = dataArray.map((x) => {
  a = x.valueA;
  b = x.valueB;
  c = x.valueC;
});

我的响应和代码一切正常,但是当我通过 ESLINT 检查时,它返回的错误是 Use object destructuring 有没有人帮我解决这个问题。非常感谢任何支持

【问题讨论】:

  • 你确定dataArray 是像[{}] 这样的数组对象吗?因为如果您每次都使用地图,a,b and c 会用新值重新声明。所以在循环结束时,最后一项值只添加了a,b and c
  • 我想也许你编辑你的真实代码太多了!我看不出它是如何被解构的。如果我是对的并且您需要更多帮助,请编辑您的帖子,但这里有一个类似的答案仅供参考stackoverflow.com/questions/47395070/…
  • @prasanth 是的 dataArray 就像 [{}]。并且 a、b 和 c 没有重新声明,因为它是在 api 调用之外声明的。当我在未完成的 map 函数下创建它时,它将重新声明。非常感谢互动
  • @user2740650 是的,我在这里写 sudo 代码,因为实际代码很长。而且我认为这里不需要实际的代码,因为我只是想理解这个概念。非常感谢您的互动。
  • 请显示实际代码,或至少显示实际代码的最小表示 - 发布的代码没有多大意义(在重新分配 a 或linter 警告)

标签: javascript eslint


【解决方案1】:

您的 abc 似乎等于 dataArray 的最后一个值。所以应该是

const { a = '', b = '', c = '' } =
  dataArray.length > 0 ? dataArray[dataArray.length - 1] : {};

【讨论】:

    【解决方案2】:

    我认为在你的场景中forEachmap 更合适。

    dataArray.forEach(({ valueA, valueB, valueC }) => {
      a = valueA;
      b = valueB;
      c = valueC;
    });
    

    或者,如果您想使用map,则需要添加内联返回语句({})。

    const { a, b, c } = dataArray
      .map(({ valueA: a, valueB: b, valueC: c }) => ({
        a,
        b,
        c
      }))
      .pop() || { a: "", b: "", c: ""};
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      相关资源
      最近更新 更多