2015-07-10 92 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'屬性來排序,它就可以工作! –