多维数组过滤

时间:2014-01-13 08:53:20

标签: javascript jquery

我有一个很长的字体数据数组,超过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 个答案:

答案 0 :(得分:3)

map非常适合:

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

答案 1 :(得分:2)

您可以使用$.map功能,就像这样

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

Live demo

如果您的浏览器支持Array.prototype.map,则可以使用

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