计算javascript中从数组到对象数组的重复值
目前,我得到了这样一个数组:计算javascript中从数组到对象数组的重复值,javascript,arrays,reactjs,object,Javascript,Arrays,Reactjs,Object,目前,我得到了这样一个数组: uniqueCount = [a,a,b,c,d,a,a]; 如何计算阵列中有多少个a、b、c?我希望得到类似于对象数组格式的结果: [{key: "a", count: 4} {key: "b", count: 1} {key: "c", count: 1} {key: "d", count: 1}] 霉菌代码: var current = null; var count = 0; for (var i = 0; i < uniqueCount
uniqueCount = [a,a,b,c,d,a,a];
如何计算阵列中有多少个a、b、c?我希望得到类似于对象数组格式的结果:
[{key: "a", count: 4}
{key: "b", count: 1}
{key: "c", count: 1}
{key: "d", count: 1}]
霉菌代码:
var current = null;
var count = 0;
for (var i = 0; i < uniqueCount .length; i++) {
if (uniqueCount [i] != current) {
if (count > 0) {
result.push({
key: current,
count: count
});
}
current = uniqueCount [i];
count = 1;
} else {
count++;
}
}
if (count > 0) {
result.push({
key: current,
count: count
});
}
谢谢。您只需正确应用条件,检查此代码段,首先,我们在数组中找到它的名称
f.key==m
。如果找到,则将其增加到1(uniqueArray[index].count+=1
),否则添加到具有count 1的对象中
const数组=['a','a','b','c','d','a','a'];
常量uniqueArray=[];
array.forEach((m)=>{
const obj={key:m,count:1};
const index=uniqueArray.findIndex((f)=>{return f.key==m;});
index==-1?uniqueArray.push(obj):uniqueArray[index]。计数+=1;
});
console.log(uniqueArray)
将数组简化为映射,然后使用array.from()
转换为对象数组:
const数组=['a','a','b','c','d','a','a']
const count=Array.from(
array.reduce((r,c)=>r.set(c,(r.get(c)| | 0)+1),newmap(),
(([key,count])=>({key,count}))
)
console.log(count)
首先计算uniqueCount
数组中出现的字符数。然后使用map
生成对象的结果数组,如下所示
var uniqueCount=['a','a','b','c','d','a','a'];
var duplicateCount={};
uniqueCount.forEach(e=>duplicateCount[e]=duplicateCount[e]?duplicateCount[e]+1:1);
var result=Object.keys(duplicateCount).map(e=>{return{key:e,count:duplicateCount[e]});
控制台日志(结果)
您应该使用lodash
处理复杂的数据转换,如您的目标:
console.log(
_.chain(uniqueCount)
.groupBy()
.map((value, key) => ({ key: key, count: value.length}))
.value()
);
Lodash文件:到目前为止有什么努力吗?请发布您迄今为止所编写的代码。在过去两天内,我已经看到这个问题至少两次,每次都在原始数组的元素周围缺少引号。我想知道为什么…这看起来像一个面试问题…@ASDFGerte-很高兴知道。。。这是可疑的…@sharpieone或学校作业谢谢你的帮助support@CườngBờI’不客气@CườngBờ我建议你回答一个你知道的问题。
uniqueCount = ["a","a","b","c","d","a","a"]
count = {}
uniqueCount.forEach(x => {
if(count[x]) {
count[x] += 1
}
else {
count[x] = 1
}
})
const result = Object.keys(count).map(x => { return {key:x, count:count[x]}})
console.log(result)
console.log(
_.chain(uniqueCount)
.groupBy()
.map((value, key) => ({ key: key, count: value.length}))
.value()
);