按值排序Javascript对象,返回错误的结果

时间:2018-04-05 19:32:30

标签: javascript sorting object

我用Promise创建了publicPostContent数组。一旦完成创建。我看到我有一个包含3个Javascript对象的数组,我试图对Grade的值进行排序,例如: 17.23949 / 25.50033 / 40.23245

我使用如下的比较功能,但这似乎根本不起作用,我使用了不同的比较功能。但没有结果。 我开始认为我的javascript对象格式不正确? 我没有错误,但每次刷新时排序似乎都会产生不同的结果。

console.log(a)什么都不返回。

this.publicPostContent[i] = {"_id": key._id,"timePast" : 
this.timePastPublic, "grade": this.publicPostGrade[i]}
this.publicPostContent.sort(this.compareValues('grade'));
compareValues(key, order = 'asc') {
    return function(a, b) {
        if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
            // property doesn't exist on either object
            return 0;
        }
        console.log(a)
        const varA = (typeof a[key] === 'string') ?
            a[key].toUpperCase() : a[key];
        const varB = (typeof b[key] === 'string') ?
            b[key].toUpperCase() : b[key];
        console.log(varA)
        let comparison = 0;
        if (varA > varB) {
            comparison = 1;
        } else if (varA < varB) {
            comparison = -1;
        }
        return (
            (order == 'desc') ? (comparison * -1) : comparison
        );
    };
}

1 个答案:

答案 0 :(得分:0)

您可以尝试使用此代码按键排序

&#13;
&#13;
var array =[{"grade":50.23949},{"grade":17.23949} ,{"grade":25.50033},{"grade":40.23245}];

function sortByKey(unSortArray,key)
{
  return unSortArray.sort(function(first, second)  
  {  
      if(!first.hasOwnProperty(key) || !first.hasOwnProperty(key)) {
        // property doesn't exist on either object
          return 0; 
      }
      if (first[key] == second[key])  
          return 0;  
      if (first[key] <  second[key])  
          return -1;  
      else  
          return 1;   
  });
}


var sortArray = sortByKey(array,"grade");
console.log(sortArray);
&#13;
&#13;
&#13;