Business = {
1: { Country: "France" },
2: { Country: "France" },
3: { Country: "UnitedKingdom" },
4: { Country: "France" }
}
我有一个企业的对象列表(指定了一个ID),每个企业都有自己的国家。
我的问题是,通过财产来确定金额的最佳方法是什么?例如,如果我想找到法国企业的总数量,它将根据代码示例返回3。
发布于 2017-04-18 17:17:22
你可以试试这样的方法:
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,否则我们将其返回不变。然后返回累加器的值。发布于 2017-04-18 17:15:29
你的目标有问题。您可以使用以下内容,但我必须问为什么不只是使用数组呢?
Business = {
01: {Country:"France"},
02: {Country:"United Kingdom"},
03: {Country:"France"},
04: {Country:"France"},
}
const BusinessArray = [
{Country:"France"},
{Country:"United Kingdom"},
{Country:"France"},
{Country:"France"},
]
console.log(
BusinessArray.filter(x => x.Country === 'France').length
)
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)
)
发布于 2017-04-18 17:21:23
你可以用一个物体来计数国家。
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);
.as-console-wrapper { max-height: 100% !important; top: 0; }
https://stackoverflow.com/questions/43478272
复制相似问题