我有一个数据数组如下:
var arr = [{
"Sports" : "Hockey",
"Country" : "AUS",
"Players" : 11
},{
"Sports" : "Football",
"Country" : "Eng",
"Players" : 11
},{
"Sports" : "Tennis",
"Country" : "AUS",
"Players" : 11
},{
"Sports" : "Cricket",
"Country" : "Ind",
"Players" : 11
},{
"Sports" : "Gymnastic",
"Country" : "Russia",
"Players" : 11
},{
"Sports" : "Gym",
"Country" : "AUS",
"Players" : 11
}];
我想创建一个对象数组,我只想在上面的数组中使用国家/地区的唯一数据。在这种情况下,我应该得到类似的东西:
var country = [
{ AUS: "" },
{ Eng :"" },
{ Ind : "" },
{ Russia :"" }
];
然后我可以添加我自己的属性,比如 capital
:
var country = [{
AUS: "",
capital : "Canbara"
}, {
Eng :"",
capital : "London"
}, {
Ind : "",
capital : "Delhi"
}, {
Russia :"",
capital : "Masco"
}];
谁能帮我实现这个目标?
这是我目前尝试过的:
var result = [];
array.forEach(function(e) {
result.push(this[e.Country]);
}, {});
我卡在这里了。
最佳答案
您可以使用map
方法接受回调 提供的函数。
此外,使用 Set
ES6
feature 来删除重复项。
Set
对象允许您存储任何类型的唯一
值,无论是原始
值还是对象
引用资料。
var arr = [{ "Sports" : "Hockey", "Country" : "AUS", "Players" : 11 },{ "Sports" : "Football", "Country" : "Eng", "Players" : 11 },{ "Sports" : "Tennis", "Country" : "AUS", "Players" : 11 },{ "Sports" : "Cricket", "Country" : "Ind", "Players" : 11 },{ "Sports" : "Gymnastic", "Country" : "Russia", "Players" : 11 },{ "Sports" : "Gym", "Country" : "AUS", "Players" : 11 }];
arr=[...new Set(arr.map(function(item){
return item.Country;
}))].map(function(item){
return {[item]:""};
});
console.log(arr);
另一种解决方案是使用arrow
函数。
var arr = [{ "Sports" : "Hockey", "Country" : "AUS", "Players" : 11 },{ "Sports" : "Football", "Country" : "Eng", "Players" : 11 },{ "Sports" : "Tennis", "Country" : "AUS", "Players" : 11 },{ "Sports" : "Cricket", "Country" : "Ind", "Players" : 11 },{ "Sports" : "Gymnastic", "Country" : "Russia", "Players" : 11 },{ "Sports" : "Gym", "Country" : "AUS", "Players" : 11 }];
arr=[...new Set(arr.map(a => a.Country))].map(a=> ({[a] : ""}));
console.log(arr);
关于javascript - 如何从数组中过滤特定属性并将其存储到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46907250/