如何按属性值长度对对象数组排序
howto sort an array with objects by property value length?
在javascript中,我有以下数组的对象:
var defaultSanitizer = [
{"word": "large", "replaceWith":"L"},
{"word": "os", "replaceWith":"One Size"},
{"word": "xlarge", "replaceWith":"XL"},
{"word": "o/s", "replaceWith":"One Size"},
{"word": "medium", "replaceWith":"M"}
...
];
(实际上这个数组要大得多)
我想创建一个函数,这样我就可以按属性值的长度排序数组,例如对象的属性"word"。
像这样:
function sortArrByPropLengthAscending(arr, property) {
var sortedArr = [];
//some code
return sortedArr;
}
如果我要运行sortArrByPropLengthAscending(defaultSanitizer, "word")函数,它应该返回一个排序数组,看起来像这样:
sortedArr = [
{"word": "os", "replaceWith":"One Size"},
{"word": "o/s", "replaceWith":"One Size"},
{"word": "large", "replaceWith":"L"},
{"word": "xlarge", "replaceWith":"XL"},
{"word": "medium", "replaceWith":"M"}
...
]
你会怎么做?
function sortMultiDimensional(a,b)
{
return ((a.word.length < b.word.length) ? -1 : ((a.word.length > b.word.length) ? 1 : 0));
}
var defaultSanitizer = [
{"word": "large", "replaceWith":"L"},
{"word": "os", "replaceWith":"One Size"},
{"word": "xlarge", "replaceWith":"XL"},
{"word": "o/s", "replaceWith":"One Size"},
{"word": "medium", "replaceWith":"M"}
];
defaultSanitizer.sort(sortMultiDimensional);
console.log(defaultSanitizer);
您可以按照属性propName
的升序长度对数组进行排序:
function sortArray(array, propName) {
array.sort(function(a, b) {
return a[propName].length - b[propName].length;
});
}
参见Array.sort
功能说明
相关文章:
- 按不同项目对对象数组进行排序
- 对对象数组中的数组进行排序
- 按特定键对对象数组进行排序
- 尝试对对象数组进行排序但拼接不是一个函数
- 对javascript中某些键的对象数组进行排序
- 在Javascript中对具有特定异常的对象数组进行排序
- Lodash 在 JavaScript 中对对象数组进行排序
- AngularJS使用对象属性排序多个对象数组
- 如何使用第二个数组中对象的相关属性对对象数组进行排序
- 按属性对对象数组进行排序
- 如何使用下划线根据自定义排序顺序对对象数组进行排序
- 如何通过连接多个异步javascript调用,从对象数组中排序并获取第一个obejct
- Javascript:使用value属性对关联数组进行排序,而不转换为对象数组
- 如何对姓氏进行排序,格式化电话号码,并返回一个包含对象数组值的字符串
- 如何按日期对Javascript对象数组排序
- 按唯一键将对象数组排序为数组
- 根据带有空值的多个条件对对象数组排序
- 在Javascript中保留对象数组排序后的插入顺序
- 如何按属性值长度对对象数组排序
- 使用lodash将对象数组排序为Top N,其中N +1为“other "”