如何传递到该数组中对象的数组访问属性的排序方法的函数

how function that pass to sort method of array access property of object in that array?

本文关键字:数组 访问 属性 排序 函数 方法 对象 何传递      更新时间:2023-09-26
function comParison(propertyName){
    return function(obj1,obj2){
       var value1 = obj1[propertyName];
       var value2 = obj2[propertyName];
       if (value1 < value2){
        return -1;
       }else id (value1 > value2){
        return1;
       }else{
        return 0;
       }
    }
  };

var data = [{name:n1},{name:n2}];
data.sort(comParison("name"));

这将比较名称,但是comParison函数如何访问名称属性以及为什么它必须作为字符串传递?

上面的例子是基于闭包的。一步一步大致是这样的:

  1. comParison函数接受propertyName作为参数
  2. comParison 中创建的匿名函数,该函数可以访问propertyNamecomParison 中的其他所有内容(以及全局变量(。
  3. 然后,此匿名函数作为排序函数返回
  4. 当调用此匿名函数时,由于闭包,它仍然可以访问propertyName变量,因此能够访问obj[propertyName]

希望这能说清楚一点。

另一个有用的答案。