簡體   English   中英

JS-Object.keys()中的三元語句

[英]JS - ternary statement inside Object.keys()

當我像下面這樣在Object.keys()中放入ternary statementif statement

 Object.keys(date).forEach((index) => {
        dates[date[index].id] !== undefined ?
          dates[date[index].id] =
          [...dates[dates[date[index].id], dates[date[index].name]
          : null;
      });

我從Linter收到此錯誤:

Expected an assignment or function call and instead saw an expression. (no-unused-expressions)

當我使用常規的if語句時,出現此錯誤,

Parsing error: Unexpected token (Fatal)

為什么?

您輸入了重復的dates ,並在作業中遺漏了一些括號:

dates[date[index].id] = [...dates[dates[date[index].id], dates[date[index].name]

應該是:

dates[date[index].id] = [..dates[date[index].id], dates[date[index].name]]

演示:

Object.keys(date).forEach((index) => dates[date[index].id] !== undefined ?
        dates[date[index].id] = [...dates[date[index].id], dates[date[index].name]] : null);

您可以使用常規條件條件,而沒有三叉戟不喜歡的三元表達式。

Object.keys(date).forEach((index) => {
    if (dates[date[index].id] !== undefined) {
        dates[date[index].id] = [
            ...dates[dates[date[index].id]],
            dates[date[index].name]
        ];
    }
});

基本上,tenary與操作員外部的作業一起使用,例如

x = a > 4 ? 7: 8;

而您的分配是在操作員內部進行的。

您那里只有一些語法錯誤,可能是由於屬性訪問的嵌套過於復雜。 把事情簡單化:

for (const index in date) {
    const id = date[index].id;
    if (dates[id] !== undefined) {
        dates[id].push(date[index].name);
        // or if you insist:
        // dates[id] = [...dates[id], date[index].name];
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM