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

Javascript JS-Object.keys()中的三元语句,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,当我将三元语句或if语句放入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;

当我将
三元语句
if语句
放入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)

当我使用一个常规的if语句时,我得到了这个错误

Parsing error: Unexpected token (Fatal)

为什么?

您可以使用常规if条件,而不使用linter不喜欢的三元表达式

Object.keys(date).forEach((index) => {
    if (dates[date[index].id] !== undefined) {
        dates[date[index].id] = [
            ...dates[dates[date[index].id]],
            dates[date[index].name]
        ];
    }
});
基本上,十进制与运算符之外的赋值一起使用,如

x = a > 4 ? 7: 8;

而赋值发生在运算符内部。

可以使用常规if条件,而不使用linter不喜欢的三元表达式

Object.keys(date).forEach((index) => {
    if (dates[date[index].id] !== undefined) {
        dates[date[index].id] = [
            ...dates[dates[date[index].id]],
            dates[date[index].name]
        ];
    }
});
基本上,十进制与运算符之外的赋值一起使用,如

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

这里有一些语法错误,可能是由于属性访问嵌套过于复杂所致。保持简单:

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

您在中复制了
日期
,作业中缺少了一些括号:

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]]
演示:


您在中复制了
日期
,作业中缺少了一些括号:

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]]
演示:



我不仅仅从linter得到一个错误,我还从任何JS解析器得到一个语法错误。很明显,您的括号嵌套错误。“当我使用常规if语句时”-请发布该尝试的代码<代码>日期?即使添加了缺少的<代码>],它也几乎完全难以辨认。因为您使用三元作为if,所以它会大喊大叫。。。。。糟糕的做法。我不仅仅从一个linter得到一个错误,我还从任何JS解析器得到一个语法错误。很明显,您的括号嵌套错误。“当我使用常规if语句时”-请发布该尝试的代码<代码>日期?即使添加了缺少的<代码>],它也几乎完全难以辨认。因为您使用三元作为if,所以它会大喊大叫。。。。。错误的做法。当我使用常规if语句时,解析错误:意外标记(致命)您忘记了右括号。将
dates[date[index].id]=[…dates[date[index].id],dates[date[index].name];
更改为
dates[date[index].id]=[…dates[dates[index].id]],dates[date[index].name];
当我使用常规if语句时,分析错误:意外标记(致命)您忘记了右括号。更改
dates[date[index].id]=[…日期[dates[date[index].id],日期[date[index].name];
to
dates[date[index].id]=[…日期[dates[date[index].id]、日期[date[index].name]];
括号不是必需的assignment@guest271314-没错。他缺少了一些括号。我认为他不是缺少括号,而是无意中复制了
日期[
。从
日期[dates[date…
中删除一次,从
日期中删除一次[日期…
@Bergi-确实如此。谢谢。括号不是必需的assignment@guest271314-没错。他缺少了一些括号。我认为他不是缺少括号,而是无意中复制了
日期[
。从
日期[dates[date…
中删除一次,从
日期中删除一次[日期…
@Bergi-确实如此。谢谢。