我有一个数组,其中包含一个这种形式的对象: Array = [{type:type,message:message}]
我不断收到ESLint错误,要求我使用对象分解和数组分解。
当前我的代码如下:
let type=null;
let message=null;
if (data.length > 0) {
({ type, message } = data[0]);
}
到目前为止,此方法有效,并且正确分配了我的变量,但是我仍然从ESLint收到“使用数组分解”消息。
任何对此的帮助将不胜感激。谢谢
答案 0 :(得分:2)
您可以解构数组:
let type=null;
let message=null;
if (data.length > 0) {
[{ type, message }] = data;
}
上面的代码是以下代码的简化版本:
[ firstElement ] = data; // array destructruring
({ type, message } = firstElement); // object destructuring
答案 1 :(得分:1)
Faly's way很好。您还可以在进行销毁时使用默认值:
function test(label, data) {
// 1 -----------------------------vvvvv
let [{type = null, message = null} = {}] = data;
// 2 -----^^^^^^^---------^^^^^^^
console.log(label, type, message);
}
test("test1: ", []);
test("test2: ", [{type: "t"}]);
test("test3: ", [{type: "t", message: "m"}]);
之所以可行,是因为如果data.length
为0
,data[0]
为undefined
,并因此触发了对数组使用默认值{}
(1)部分在对象部分中,我们也使用null
(2)来处理对象上所有丢失的值。
答案 2 :(得分:1)
EsLint要您写
let type = null;
let message = null;
if (data.length > 0) {
[{ type, message }] = data;
}
将可迭代data
的第一项分解为{type, message}
目标。 (更多项目将被忽略)。
但是我建议对空的情况使用默认值:
const [{type, message} = {type:null, message:null}] = data;
或者也是
const [{type = null, message = null} = {}] = data;