我有一些名称和变量的对象。
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];
答案 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
};
});
答案 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"
}
]