当我在Object.keys()中放置ternary statement
或if 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)
为什么?
答案 0 :(得分:4)
您已复制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);
答案 1 :(得分:2)
你可以使用常规的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]
];
}
});
基本上,tenary与运算符之外的赋值一起使用,如
x = a > 4 ? 7: 8;
而你的任务是在经营者内部进行的。
答案 2 :(得分:2)
你只有一些语法错误,可能源于过度复杂的属性访问嵌套。保持简单:
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];
}
}