2015-07-10 50 views
-1

我需要对数组进行排序,以便按名称的字母顺序对每个对象进行排序。我需要使用本地函数或使用下划线库来实现此目的。使用函数或使用下划线在javascript中排序

这是我的JSON数据:

var data = [ 
    { 
     name: "xyz", 
     size: "small" 
    }, 
    { 
     name: "abc", 
     size: "large" 
    }, 
     { 
     name: "fcd", 
     size: "large" 
    }, 
]; 

这是我的样本JSON文件。我希望名称为abc的对象首先出现在数组中。

在此先感谢

回答

-1

打开控制台,并运行此代码,看看它的对象进行排序。

var data = [ 
 
    { 
 
    name: "xyz", 
 
    size: "small" 
 
    }, 
 
    { 
 
    name: "abc", 
 
    size: "large" 
 
    }, 
 
    { 
 
    name: "fcd", 
 
    size: "large" 
 
    }, 
 
]; 
 
    
 
console.log(
 
data.sort(function(obj1, obj2){ return obj1.name > obj2.name}) 
 
);

+2

为['Array.prototype.sort']比较函数(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)应该返回'-1','0'或'1',而不是'true'或'false'。 –

+0

每次这个名字abc都不会作为第二个元素出现..也可能有额外的名字..在这种情况下,这不适用? – rUI7999

+0

我已经用各种方法对它们进行了加扰,并保持正确出现(包括添加和删除元素)。 'Number(true)'和'Number(false)'转换为'1'和'0'。可能排序算法将需要多次迭代,而没有选择'-1'。但它工作正常。 – ChadF

0
var data; // This is your data array 

data.sort(function(a, b) { 
    if (a.name > b.name) { 
     return 1; 
    } 
    if (a.name < b.name) { 
     return -1; 
    } 
    // a must equal b 
    return 0; 
}); 

参见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

+0

每次这个名字abc不是作为第二个元素出现的时候..也可能有额外的名字。在这种情况下,这不适用? – rUI7999

+0

如果数组的顺序不同或者数组有更多的对象,这段代码仍然可以工作。只要每个对象都有一个'name'属性来排序,它就可以工作! –

相关问题