2017-10-12 2 views
1

私はObject.keys内ternary statementまたはif statementを置く()怒鳴るような:JS - Object.keys内部の三元の文()

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

私はリンターからこのエラーを取得する:

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

、私はこのエラーを取得する文の場合、私は定期的に使用し、

Parsing error: Unexpected token (Fatal) 

なぜ?

+0

私はただのエラーを出すだけではありません私は* JS構文解析ツールからも構文エラー*を受け取ります。あなたは明らかに誤った括弧を持っています。 – Bergi

+0

'dates [date [index] .id]!==未定義? [...日付[日付[インデックス] .id]、日付[日付[インデックス] .name]:ヌル; ' – Weedoze

+2

" *通常のif文を使用すると* " - その試行のコードを投稿してください – Bergi

答えて

4

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); 
+0

括弧は代入を必要としません – guest271314

+0

@ guest271314 - そうです。彼はいくつかの括弧を欠いていた。 –

+0

括弧がなくなると思いますが、彼は無意識のうちに 'dates ['を複製していました。 'dates [dates [date ...]と' dates [date ...]から一度削除してください。 @Bergi - 確かに。 – Bergi

2

リンターが好きではない三項式を使わずに、通常のif条件を使うことができます。

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; 

のように、オペレータの外側の割り当てで使用されます。

+0

通常のif文を使用すると、\t構文解析エラー:予期しないトークン(致命的) – Adel

+0

あなたは閉じ括弧を忘れています。 'date [index] .id] = [... dates [date [index] .id]、dates [date [index] .name];'を 'dates [index] .idに変更します。 = [... dates [dates [date] [index] .id]]、dates [date [index] .name]]; ' – guest

2

複雑な構文エラーがあります。おそらく、複雑なプロパティアクセスのネストが原因です。それをシンプルに保つ:あなたがでdatesを重複して割り当てでいくつか欠けているブラケット持っ

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]; 
    } 
}