Sorting 下划线JS:按空属性排序的对象
问题是,我想按价格对可能包含以下空属性的用户数组进行排序:Sorting 下划线JS:按空属性排序的对象,sorting,underscore.js,lodash,Sorting,Underscore.js,Lodash,问题是,我想按价格对可能包含以下空属性的用户数组进行排序: var array = [ { "created": "2015-11-27T16:33:46.781Z", "name": "Johan", "pricing": { "base_price" : "12", "price_by_hour" : "5" } }, { "created": "2015-11-27T16:
var array = [
{
"created": "2015-11-27T16:33:46.781Z",
"name": "Johan",
"pricing": {
"base_price" : "12",
"price_by_hour" : "5"
}
},
{
"created": "2015-11-27T16:33:46.781Z",
"name": "Marco"
},
{
"created": "2015-11-27T16:33:46.781Z",
"name": "Jane",
"pricing": {
"base_price" : "8",
"price_by_hour" : "11"
}
}
];
array = _.sortBy(array, function(item) {
return item.pricing.base_price;
});
console.logarray
TypeError: Cannot read property 'base_price' of undefined
如何将没有定价对象的项目放在列表底部,并对其进行排序
在本例中,我想先用Jane、Johan、Marco对列表进行排序。只需放置一个条件
array = _.sortBy(array, function(item){
if(item.pricing){
return item.pricing.base_price;
}
});
只需提出一个条件
array = _.sortBy(array, function(item){
if(item.pricing){
return item.pricing.base_price;
}
});
好的,如果属性为空,我必须返回false:
array = _.sortBy(array, function(item) {
if(!item.pricing || !item.pricing.base_price){
return -1;
}
return item.pricing.base_price;
});
好的,如果属性为空,我必须返回false:
array = _.sortBy(array, function(item) {
if(!item.pricing || !item.pricing.base_price){
return -1;
}
return item.pricing.base_price;
});
您需要一个条件以避免出现TypeError。此外,您还需要将基本价格转换为数字,以获得适当的排序
array = _.sortBy(array, function(item){
if(item.pricing){
return Number(item.pricing.base_price);
}
});
另一种选择是将它们初始化为数字
您需要一个条件以避免出现TypeError。此外,您还需要将基本价格转换为数字,以获得适当的排序
array = _.sortBy(array, function(item){
if(item.pricing){
return Number(item.pricing.base_price);
}
});
另一种选择是将它们初始化为数字
下面是一个简单的方法:
_.sortBy(array, 'pricing.base_price');
当您将字符串作为迭代对象传递给时,将使用该函数。此函数用于属性路径,如果属性不存在,则只返回未定义的路径。以下是一种简单的方法:
_.sortBy(array, 'pricing.base_price');
当您将字符串作为迭代对象传递给时,将使用该函数。此函数用于属性路径,如果属性不存在,只返回未定义的属性。请注意,您的价格是字符串。这会直接影响sortBy函数,因为12<8,但显然12>8请注意,您的价格是字符串。这直接影响到你的排序功能,因为12<8,但显然12>8是目前为止最好和最干的er答案。目前为止最好和最干的er答案。