javascript - 如何从数组中过滤特定属性并将其存储到变量中

标签 javascript arrays data-structures

我有一个数据数组如下:

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/

相关文章:

javascript - 如何从剑道网格中删除一行

javascript - 如何使用 puppeteer 检查 div 是否具有特定的类?

javascript - 在 javascript 上获取 JSON 对象内数组的索引

c# - .NET Framework 内置接口(interface),构建自定义数据结构时的建议?

database - 允许有效搜索对象的数据结构

javascript - 路由器在注入(inject) ngrx 存储定义解析器后停止工作

javascript - 在 angularjs 中未预先选择选择框值的问题

java - 如何在不覆盖的情况下打印对象字段?

php - 如何匹配PHP数组中的值然后找到键值?

c++ - 检查二叉树是否为二叉搜索树或不起作用的函数