具有多种情况的 JavaScript Switch 语句

时间:2021-03-23 04:01:21

标签: javascript

如果找到对象,我必须从对象数组中找到一个对象,然后我必须向它添加 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;
        });

2 个答案:

答案 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
  }
}