2014-01-13 174 views
2

我有很長的字體數據陣列,超過100個元件是這樣的:多維陣列過濾

var fonts = [ 
    { 
     "id": 1, 
     "name": "Arial", 
     "set": 1 
    }, 
    { 
     "id": 3, 
     "name": "Aller", 
     "set": 1 
    }, 
    { 
     "id": 4, 
     "name": "Amatic", 
     "set": 0 
    }, 
    { 
     "id": 5, 
     "name": "Architects Daughter", 
     "set": 0 
    }, 
    { 
     "id": 6, 
     "name": "Black Jack", 
     "set": 0 
    } 

] 

現在我想改進我的陣列是這樣的(新的數組只包含name數據)

fonts = [ 
    "Arial", 
    "Aller", 
    "Amatic", 
    "Architects Daughter", 
    "Black Jack" 
] 

我可以做到這一點:

var _tempArray; 

$.each(fonts,function(){ 
    _tempArray.push($(this).name); 
}); 

fonts = _tempArray; 

但我知道這是不是漂亮的解決方案。我能做些什麼來改善?

回答

2

可以使用$.map功能,這樣

fonts = $.map(fonts, function(val) { 
    return val.name; 
}); 

Live demo

如果你的瀏覽器支持Array.prototype.map,您可以使用

fonts = fonts.map(function(val) { 
    return val.name; 
}); 
3

map非常適合這樣的:

var names = fonts.map(function(item) { return item.name }); 
+1

+1使用本地瀏覽器映射函數,而不是使用jQuery包裝器。 –

+2

jQuery版本具有在較舊的IE版本中工作的優勢。 – Barmar