按属性对对象数组进行排序

时间:2017-03-02 18:30:25

标签: javascript jquery arrays sorting

大家好我需要一个函数,以便我可以按特定属性值按字母顺序对对象数组进行排序。

假设我有这个数组:

var myObj = [{Name: 'John'},
             {Name: 2.10},
             {Name: 'Andrew'},
             {Name: 10},
             {Name: 2.101}
            ];

结果应该是2.10,2.101,10,'安德鲁'约翰'。我需要这个排序,因为在我的程序中,Name属性可以是' John'或和IP(如1.0.0.14)或甚至MAC地址(97948453855)...

我已经管理了一些排序,但它似乎并不适用于字符串和数字。

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以检查字符串并使用delta作为第一个结果部分,或者使用nummerical delta或最后进行字符串比较。



var array = [{ Name: 'John' }, { Name: 2.10 }, { Name: 'Andrew' }, { Name: 10 }, { Name: 2.101 }];
            
array.sort(function (a, b) {
    return (typeof a.Name === 'string') - (typeof b.Name === 'string') || a.Name - b.Name || a.Name.localeCompare(b.Name);
});

console.log(array);