我有一个名为people的数组,它是一个对象数组(人的名字和他/她的城市的名字),我想创建一个函数来计算该数组中不同城市的总数。我使用了一个用于for循环的函数,但通过在JavaScript中使用reduce函数,这似乎是一种更好的方法。这是片段
const people = [
{ name: "Jessica", city: "New York"},
{ name: "Steve", city: "Los Angels"},
{ name: "Peter", city: "Boston"},
{ name: "Elaine", city: "Montreal"},
{ name: "Chris", city: "Montreal"},
{ name: "Mike", city: "Boston"},
{ name: "George", city: "Vancouver"},
];
let nbre_distinct_cities = 0;
countDistinctCity(people);
console.log('Total number of distinct cities: ',nbre_distinct_cities);
function countDistinctCity(people)
{
for(let i = 0; i < people.length; i++)
{
if(i === people.length - 1)
{
break;
}
else if(people[i].city !== people[i + 1].city)
{
nbre_distinct_cities++
}
}
}Run Code Online (Sandbox Code Playgroud)
如果有人建议使用reduce()函数的高效功能,我将不胜感激
您可以使用a Set来存储数组中的所有城市,并且由于集合中只有唯一的条目,因此集合的最终大小将为您提供不同城市的数量:
const people = [
{ name: "Jessica", city: "New York"},
{ name: "Steve", city: "Los Angels"},
{ name: "Peter", city: "Boston"},
{ name: "Elaine", city: "Montreal"},
{ name: "Chris", city: "Montreal"},
{ name: "Mike", city: "Boston"},
{ name: "George", city: "Vancouver"},
];
let nbre_distinct_cities = new Set(people.map(({city}) => city)).size;
console.log('Total number of distinct cities: ', nbre_distinct_cities); Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |