从数组中获取对象名称

时间:2016-03-29 11:33:50

标签: javascript arrays object

我有一些名称和变量的对象。

var data = [ {   "id": 144,
    "name": "Zagreb",
    "region": "",
    "iso": "HR",
    "country": "Croatia"},
{   "id": 145,
    "name": "Wellington",
    "region": "",
    "iso": "NZ",
    "country": "New Zealand"}];

对于渲染下拉列表,我只需要" name"和"国家"。

但是,对象可以有其他带变量的名称。我知道。 所以我有想法,写出需要在数组中呈现的名称,如。

var renderNames = ['name', 'country'];

此刻我已经停了下来。我不知道如何使用数组中的名称从对象获取值。 我认为,它必须是这样的:

data.name == data. (do something) renderNames[1];

4 个答案:

答案 0 :(得分:2)

  

对于渲染下拉列表,我只需要“名称”和“国家/地区”。

如果你想要一个来自这个数组的名字数组

var names = data.map(function(value){return value.name});

类似地,对于国家阵列

var countries = data.map(function(value){return value.country});

答案 1 :(得分:1)

如果你想要一个包含名称和国家/地区的对象的数组,这可以起作用:

var dropdowns = data.map(function(obj) {
    return {
    country: obj.country,
    name: obj.name
  };
});

https://jsfiddle.net/w0ggxc3m/

答案 2 :(得分:0)

使用Lodash怎么样? https://lodash.com

然后很容易

_.map(data, function(obj) {
  return _.pick(obj, ['name', 'country']);
});

答案 3 :(得分:0)

您还可以在ES6中使用arrow function expression新内容

var data = [ {   "id": 144,
    "name": "Zagreb",
    "region": "",
    "iso": "HR",
    "country": "Croatia"},
{   "id": 145,
    "name": "Wellington",
    "region": "",
    "iso": "NZ",
    "country": "New Zealand"}];
data.map(element => element.name) // return an array of names
//[ "Zagreb", "Wellington" ]
data.map(element => element.country) // return an array of country
//[ "Croatia", "New Zealand" ]    
data.map(element => [element.name, element.country]) // return 2d array of name, country
// [ [ "Zagreb", "Croatia" ], [ "Wellington", "New Zealand" ] ]

或返回属性为“name”和“country”的对象数组

data.map( element => { return { "name": element.name, "country": element.country }; }) 

产生:

[
        {
                "name" : "Zagreb",
                "country" : "Croatia"
        },
        {
                "name" : "Wellington",
                "country" : "New Zealand"
        }
]