2017-03-02 298 views
0

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

让说,我有此数组:

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

结果应该是2.10,2.101,10, '安德鲁', '约翰'。我需要这在我的程序东阳排序Name属性可以是一个名字为“约翰”或与IP(如1.0.0.14),甚至MAC地址(97948453855)...

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

谢谢!

+1

你是什么排序的依据是什么?算法? – mehulmpt

+0

显示您尝试的内容,以便我们可以看到您出错的位置。 – epascarello

+0

请提供您的代码。 –

回答

3

您可以检查字符串并使用delta作为第一个结果部分,或者采用数字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);

+0

完美地工作,非常感谢你! –