In javascript I have the following array with objects:
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"}
...
];
(in reality this array is much larger)
I want to make a function so I can order the array by the length of a property value eg the property "word" of the objects.
Something like this:
function sortArrByPropLengthAscending(arr, property) {
var sortedArr = [];
//some code
return sortedArr;
}
If I were to run the function sortArrByPropLengthAscending(defaultSanitizer, "word") it should return me a sorted array that looks like this:
sortedArr = [
{"word": "os", "replaceWith":"One Size"},
{"word": "o/s", "replaceWith":"One Size"},
{"word": "large", "replaceWith":"L"},
{"word": "xlarge", "replaceWith":"XL"},
{"word": "medium", "replaceWith":"M"}
...
]
How would you do this?
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);
You can sort the array in place by the ascending length of property propName
with:
function sortArray(array, propName) {
array.sort(function(a, b) {
return a[propName].length - b[propName].length;
});
}
See the description of the Array.sort
function.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.