JavaScript函数-计算对象数组中某个值的出现次数
我被赋予了一项任务,我肯定错过了什么。提供的代码不是原始问题,而是类似的问题。我必须计算阵列中有多少人年龄在16岁或以上。我一直在玩弄它,但我无法解决它。拜托,有人能解释一下我做错了什么吗 在任务中,我得到一个对象数组:JavaScript函数-计算对象数组中某个值的出现次数,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我被赋予了一项任务,我肯定错过了什么。提供的代码不是原始问题,而是类似的问题。我必须计算阵列中有多少人年龄在16岁或以上。我一直在玩弄它,但我无法解决它。拜托,有人能解释一下我做错了什么吗 在任务中,我得到一个对象数组: var people = [{name:'Emma', age:15},{name:'Matt', age: 16}, {name:'Janet', age:17}] 我需要完成一个函数来计算16岁或以上的人数。函数的开头已给出(即函数更正(人){//Complete}) “
var people = [{name:'Emma', age:15},{name:'Matt', age: 16}, {name:'Janet', age:17}]
我需要完成一个函数来计算16岁或以上的人数。函数的开头已给出(即函数更正(人){//Complete}
)
“示例代码”是我一直在使用的一些基本代码。“不正确的尝试”是指我的尝试,这是我不断返回的代码,或者是它的变体也是正确的
请帮忙
错误尝试:
var-people=[
{姓名:“艾玛”,年龄:15},
{姓名:“马特”,年龄:16},
{姓名:“汤姆”,年龄:17}
];
函数校正(数组){
//完成此函数可返回16岁的人数+
var计数=0;
for(设i=0;i=16){
计数++;
}
}
返回计数;
}
}
控制台日志(更正(人员))代码>您需要使用索引获取对象
obj = array[i];
然后可以直接获取属性,而不必循环所有属性
if (obj.age >= 16) {
count++;
}
您可以将这两个部分放在一个检查中,而无需使用另一个变量obj
if (array[i].age >= 16) {
count++;
}
.age
是对象的一个属性
{
name: 'Emma',
age: 15 // <--
}
您需要使用索引获取对象
obj = array[i];
然后可以直接获取属性,而不必循环所有属性
if (obj.age >= 16) {
count++;
}
您可以将这两个部分放在一个检查中,而无需使用另一个变量obj
if (array[i].age >= 16) {
count++;
}
.age
是对象的一个属性
{
name: 'Emma',
age: 15 // <--
}
使用数组的filter
方法会简单得多:
function correctAge(people = [], age = 16){
return people.filter( person => person.age > age ).length
}
使用数组的filter
方法会简单得多:
function correctAge(people = [], age = 16){
return people.filter( person => person.age > age ).length
}
将以上代码行添加到函数中
将上述代码行添加到函数中。迭代数组,检查元素匹配参数的属性,并递增计数器
下面的代码示例中,名称和属性已更改以保护无辜者
const cars=[
{制造:'日产',国家:'日本'},
{制造:'福特',国家:'美国'},
{制造:'雪佛兰',国家:'美国'},
{制造:'沃尔沃',国家:'瑞典'},
{制造:'三菱',国家:'日本'},
];
来自国家/地区(汽车、国家/地区)的功能{
让计数=0;
for(设i=0;i汽车。减少((计数,汽车)=>{
car.country===国家和计数++;
返回计数;
}, 0);
console.log(来自国家(汽车,'日本');//2.
console.log(来自国家(汽车,'瑞典');//1.
console.log(来自国家/地区(汽车,'美国');//2.
console.log(来自国家(汽车、加拿大));//0
console.log(来自Country2(汽车,“日本”);//2.
console.log(来自Country2(汽车,“瑞典”);//1.
console.log(来自Country2(汽车,'USA'));//2.
console.log(来自Country2(汽车,“加拿大”);//0
迭代数组,检查元素匹配参数的属性并递增计数器
下面的代码示例中,名称和属性已更改以保护无辜者
const cars=[
{制造:'日产',国家:'日本'},
{制造:'福特',国家:'美国'},
{制造:'雪佛兰',国家:'美国'},
{制造:'沃尔沃',国家:'瑞典'},
{制造:'三菱',国家:'日本'},
];
来自国家/地区(汽车、国家/地区)的功能{
让计数=0;
for(设i=0;i汽车。减少((计数,汽车)=>{
car.country===国家和计数++;
返回计数;
}, 0);
console.log(来自国家(汽车,'日本');//2.
console.log(来自国家(汽车,'瑞典');//1.
console.log(来自国家/地区(汽车,'美国');//2.
console.log(来自国家(汽车、加拿大));//0
console.log(来自Country2(汽车,“日本”);//2.
console.log(来自Country2(汽车,“瑞典”);//1.
console.log(来自Country2(汽车,'USA'));//2.
console.log(来自Country2(汽车,“加拿大”);//0
试试这个,你会得到你的结果
var people=[{姓名:'Emma',年龄:15},{姓名:'Matt',年龄:16},{姓名:'Janet',年龄:17}];
常数校正=函数(年龄){
返回people.filter(x=>x.age 控制台日志(更正(16))代码>试试这个,你会得到你的结果
var people=[{姓名:'Emma',年龄:15},{姓名:'Matt',年龄:16},{姓名:'Janet',年龄:17}];
常数校正=函数(年龄){
返回people.filter(x=>x.age是一个优雅的解决方案-
function correctAge(array) {
return array.reduce((total, person) => {
return person.age >= 16 ? ++total : total;
}, 0)
}
对于问题中的示例,这将返回值2。是一个优雅的解决方案-
function correctAge(array) {
return array.reduce((total, person) => {
return person.age >= 16 ? ++total : total;
}, 0)
}
对于问题中的示例,这将返回值2。这里的大多数答案都集中在or的使用上(我认为这是最合适的方法)。但是,我想指出如何修改您的“错误尝试”,使其真正起作用。以下是我采取的纠正措施:
移除道具循环。您只关心此处的age
属性,因此无需检查其他道具。(obj[prop]
实际上是向后的。它应该是obj[prop]
)
移动返回计数代码>外部<代码>用于
循环。
将array.length[i]
替换为array[i]
数组属性是整数,而不是数组或对象
var-people=[
{姓名:“艾玛”,年龄:15},
{姓名:“马特”,年龄:16},
{姓名:“汤姆”,年龄:17}
];
功能校正(人){
//完成函数返回多少人