Javascript 如何跳过相同的值并获取数组长度
我有一个示例数组:Javascript 如何跳过相同的值并获取数组长度,javascript,arrays,Javascript,Arrays,我有一个示例数组: var person = [{ firstName:"John", lastName:"Doe", age:46 }, { firstName:"Alexander", lastName:"Bru", age:46 }, { firstName:"Alex", lastName:"Bruce", age:26 }]; Simpleperson.length给出了数组的长度,但是当年龄相同时,我需要合并值
var person = [{
firstName:"John",
lastName:"Doe",
age:46
},
{
firstName:"Alexander",
lastName:"Bru",
age:46
},
{
firstName:"Alex",
lastName:"Bruce",
age:26
}];
Simple
person.length
给出了数组的长度,但是当年龄相同时,我需要合并值。因此,如果两个人年龄相同,则返回1
no2
。对不起,我的英语不好,我可能会犯错误。您可以使用下划线或类似的库来支持groupBy
:
_.size(_.groupBy(person, "age"))
将方法与年龄的对象引用一起使用
var-person=[{
名字:“约翰”,
姓:“Doe”,
年龄:46
}, {
名字:“亚历山大”,
姓氏:“布鲁”,
年龄:46
}, {
名字:“亚历克斯”,
姓:“布鲁斯”,
年龄:26
}];
//用于存储对年龄的引用的对象
var obj={},
res=0;
//迭代计数
人事费(职能)(五){
//检查年龄尚未定义
如果(!obj[v.age]){
//定义属性
obj[v.age]=正确;
//增量计数
res++;
}
});
控制台日志(res)
将数组向下过滤,只过滤那些在数组中查找到的元素,对于这些元素,具有相同年龄的第一个元素会生成元素本身,然后获取结果的长度:
array.filter(o1 => o1 === array.find(o2 => o2.age === o1.age)).length
另一个想法是使用一个名为uniqueCount
的小函数,该函数计算(排序)数组中唯一值的数量:
现在,您可以创建一个包含所有年龄段的数组,并对其上的唯一元素进行计数:
uniqueCount(array.map(e => e.age).sort(numeric))
如果允许,您可以将所有年龄添加到一个集合中并计算其大小
const people=[{
名字:“约翰”,
姓:“Doe”,
年龄:46
}, {
名字:“亚历山大”,
姓氏:“布鲁”,
年龄:46
}, {
名字:“亚历克斯”,
姓:“布鲁斯”,
年龄:26
}];
const ages=新集合(people.map(person=>person.age));
console.log(ages.size)
我不想使用其他库,但感谢您的帮助。@ReasonPlay:很高兴帮助您:)
uniqueCount(array.map(e => e.age).sort(numeric))