首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据属性计算对象中的项目总数

根据属性计算对象中的项目总数
EN

Stack Overflow用户
提问于 2017-04-18 17:08:30
回答 5查看 798关注 0票数 1
代码语言:javascript
运行
复制
Business =  {
  1: { Country: "France" },
  2: { Country: "France" },
  3: { Country: "UnitedKingdom" },
  4: { Country: "France" }
}

我有一个企业的对象列表(指定了一个ID),每个企业都有自己的国家。

我的问题是,通过财产来确定金额的最佳方法是什么?例如,如果我想找到法国企业的总数量,它将根据代码示例返回3。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-04-18 17:17:22

你可以试试这样的方法:

代码语言:javascript
运行
复制
var Business = {
    1: {Country:"France"}
  , 2: {Country:"United Kingdom"}
  , 3: {Country:"France"}
  , 4: {Country:"France"}
};

var businessInFrance = Object.keys(Business)
                             .map(key => Business[key])
                             .reduce(function(acc, val){
                                 return val.Country === "France"
                                       ? acc+=1
                                       : acc;
                                 },0);
                        
console.log(businessInFrance);

  • Object.keys(Business)返回具有Business所拥有的可枚举的数组。
  • map应用我们传递给上一步输出的函数,并返回一个新数组。此数组的元素是业务的值
  • reduce应用我们为上一步数组中的每个元素传递的函数,当Country属性的值等于"France“时,我们将累加器acc的值增加1,否则我们将其返回不变。然后返回累加器的值。
票数 2
EN

Stack Overflow用户

发布于 2017-04-18 17:15:29

你的目标有问题。您可以使用以下内容,但我必须问为什么不只是使用数组呢?

代码语言:javascript
运行
复制
Business = {
  01: {Country:"France"},
  02: {Country:"United Kingdom"},
  03: {Country:"France"},
  04: {Country:"France"},
}

代码语言:javascript
运行
复制
const BusinessArray = [
  {Country:"France"},
  {Country:"United Kingdom"},
  {Country:"France"},
  {Country:"France"},
]

console.log(
  BusinessArray.filter(x => x.Country === 'France').length
)

代码语言:javascript
运行
复制
Business = {
  01: {Country:"France"},
  02: {Country:"United Kingdom"},
  03: {Country:"France"},
  04: {Country:"France"},
}

const countriesCount = (country, businesses) => 
  Object.keys(businesses)
    .filter(x => businesses[x].Country === country)
    .length
    
console.log(
  countriesCount('France', Business),
  countriesCount('United Kingdom', Business)
)

票数 1
EN

Stack Overflow用户

发布于 2017-04-18 17:21:23

你可以用一个物体来计数国家。

代码语言:javascript
运行
复制
var business = { 1: { Country: "France" }, 2: { Country: "France" }, 3: { Country: "UnitedKingdom" }, 4: { Country: "France" } },
    count = Object.keys(business).reduce(function (r, k) {
        var country = business[k].Country;
        r[country] = (r[country] || 0) + 1;
        return r;
    }, Object.create(null));

console.log(count.France);
console.log(count);
代码语言:javascript
运行
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43478272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档