0

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"}
    ...
];

(実際には、この配列ははるかに大きくなります)

オブジェクトのプロパティ「単語」など、プロパティ値の長さで配列を並べ替えることができるように、関数を作成したいと考えています。

このようなもの:

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"}
    ...
]  

これをどのように行いますか?

4

2 に答える 2

1
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);
于 2013-04-14T18:19:16.413 に答える
0

次のようにして、プロパティの長さの昇順で配列を並べ替えることができますpropName

function sortArray(array, propName) {
    array.sort(function(a, b) {
        return a[propName].length - b[propName].length;
    });
}

関数の説明を参照してくださいArray.sort

于 2013-04-14T18:16:40.037 に答える