Linting 错误:将此数组“排序”操作移至单独的语句

Viv*_*vek 7 lint angular

你能不能用下面的javascript函数帮助修复掉毛错误。

错误:将此数组“排序”操作移至单独的语句。

  item.EmployeeDetails = item.EmployeeDetails
                            .sort((a: IEmployeeDetails, b: IEmployeeDetails) => {
        if (a.employeeType < b.employeeType) {
            return 1;
        }
        if (a.employeeType > b.employeeType) {
            return -1;
        }
        return 0;
    });
Run Code Online (Sandbox Code Playgroud)

Mik*_*sky 9

sort() 改变数组。请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype#Mutator_methods

因此,尝试省略赋值运算符:

item.EmployeeDetails.sort((a: IEmployeeDetails, b: IEmployeeDetails) => {
    if (a.employeeType < b.employeeType) {
        return 1;
    }
    if (a.employeeType > b.employeeType) {
        return -1;
    }
    return 0;
});
Run Code Online (Sandbox Code Playgroud)


Bry*_*Lee 6

为了解决这个问题,您必须在排序之前复制原始数组。这是因为使用 .sort() 进行排序会改变原始数组。您可以在此处阅读有关此 linting 错误的更多信息:https ://rules.sonarsource.com/typescript/RSPEC-4043

const sortedEmployeeDetails = [...item.EmployeeDetails]
                                .sort((a: IEmployeeDetails, b: IEmployeeDetails) => {
            if (a.employeeType < b.employeeType) {
                return 1;
            }
            if (a.employeeType > b.employeeType) {
                return -1;
            }
            return 0;
        });
Run Code Online (Sandbox Code Playgroud)


Man*_*ani 0

const empDetail = Object.assign(item, {});

 return empDetail['EmployeeDetails '].sort( (a: any , b: any) => {
    if (a.employeeType < b.employeeType) {
      return 1;
    }
    if (a.employeeType > b.employeeType) {
      return -1;
    }
    return 0;
  });
Run Code Online (Sandbox Code Playgroud)

}