我用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
);
};
}
答案 0 :(得分:0)
您可以尝试使用此代码按键排序
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;