如果找到对象,我必须从对象数组中找到一个对象,然后我必须向它添加 sort 属性,如果找不到,那么我正在寻找另一个对象。 但是如果所有对象都存在,那么我必须添加 sort 属性以仅进行第一次匹配。 我正在使用开关盒来实现这一点。但如果所有对象都存在,则将 sort 属性添加到所有对象。谁能告诉我我怎样才能做到这一点?
下面是我的代码。
this.columns = this.columns.map(field) => {
delete field.id;
switch (field.name) {
case 'creationTime':
field.sort = 'asc';
break;
case 'priority':
field.sort = 'asc';
break;
case 'completionTime':
field.sort = 'asc';
break;
}
return field;
});
答案 0 :(得分:1)
你可以这样做。 添加变量“匹配”并为其分配值“假”。 比用检查是否匹配不为真的条件包装开关。 如果一个对象匹配,则该变量将重新分配为“true”。
let match = false;
this.columns = this.columns.map(field) => {
delete field.id;
if (!match) {
switch (field.name) {
case 'creationTime':
field.sort = 'asc';
match = true;
break;
case 'priority':
field.sort = 'asc';
match = true;
break;
case 'completionTime':
field.sort = 'asc';
match = true;
break;
}
}
return field;
});
答案 1 :(得分:0)
array.map() 不允许您在循环进行时退出循环。所以我认为 for 循环在这里可能会更好。
然而,你不能在不使用临时变量的情况下从 switch 内部中断循环。如果您可以避免使用开关,则更容易:
for (const field of this.columns) {
if (field.name == "creationTime" || field.name == "priority" || field.name == "completionTime") {
field.sort = "asc";
break; // Exit the loop after first match
}
}