Javascript-在中分组后将一个数组转换为两个
我有如下数组Javascript-在中分组后将一个数组转换为两个,javascript,arrays,group-by,Javascript,Arrays,Group By,我有如下数组 myArray = ["foo", "bar", "foo", "bar", "bar", "bar", "zoom"] 我想要这样的输出 nameArray = ["foo", "bar", "zoom"] 及 我将使用Plotly从生成的两个数组中绘制条形图 TIA您可以使用reduce功能。在回调函数内部,检查累加器对象是否有一个名为foo、bar或zoom的键。如果存在,则将计数增加1,否则按该名称创建一个键,并将1作为值。然后,您可以使用Object.keys创建一
myArray = ["foo", "bar", "foo", "bar", "bar", "bar", "zoom"]
我想要这样的输出
nameArray = ["foo", "bar", "zoom"]
及
我将使用Plotly从生成的两个数组中绘制条形图
TIA您可以使用reduce功能。在回调函数内部,检查累加器对象是否有一个名为foo、bar或zoom的键。如果存在,则将计数增加1,否则按该名称创建一个键,并将1作为值。然后,您可以使用
Object.keys
创建一个键数组,该数组将是foo、bar和zoom
&Object.values
以获得计数数组
让myArray=[“foo”,“bar”,“foo”,“bar”,“bar”,“bar”,“zoom”];
让newData=myArray.reduce(函数(acc,curr){
如果(根据[当前]){
acc[curr]+=1;
}否则{
acc[curr]=1;
}
返回acc;
}, {});
让nameArray=Object.keys(newData);
设qtyArray=Object.values(newData);
log(nameArray,qtyArray)
您可以使用reduce函数。在回调函数内部,检查累加器对象是否有一个名为foo、bar或zoom的键。如果存在,则将计数增加1,否则按该名称创建一个键,并将1作为值。然后,您可以使用Object.keys
创建一个键数组,该数组将是foo、bar和zoom
&Object.values
以获得计数数组
让myArray=[“foo”,“bar”,“foo”,“bar”,“bar”,“bar”,“zoom”];
让newData=myArray.reduce(函数(acc,curr){
如果(根据[当前]){
acc[curr]+=1;
}否则{
acc[curr]=1;
}
返回acc;
}, {});
让nameArray=Object.keys(newData);
设qtyArray=Object.values(newData);
log(nameArray,qtyArray)
您可以选择并获取键和值
var数组=[“foo”、“bar”、“foo”、“bar”、“bar”、“bar”、“zoom”],
map=array.reduce((m,v)=>m.set(v,(m.get(v)| | 0)+1),新map),
值=[…map.keys()],
计数=[…map.values()];
console.log(…值);
console.log(…计数)代码>您可以选择一个,然后获取键和值
var数组=[“foo”、“bar”、“foo”、“bar”、“bar”、“bar”、“zoom”],
map=array.reduce((m,v)=>m.set(v,(m.get(v)| | 0)+1),新map),
值=[…map.keys()],
计数=[…map.values()];
console.log(…值);
console.log(…计数)代码>此答案可能有用此答案可能有用仅供参考:如果数组具有类似整数的项,则Object.keys()
的顺序将更改。仅供参考:如果数组具有类似整数的项,则Object.keys()
的顺序将更改。
qtyArray = [2, 4, 1]
var myArray = ["foo", "bar", "foo", "bar", "bar", "bar", "zoom"];
var arr = {}
myArray.map(function(x){
if(typeof(arr[x])=="undefined") {arr[x] =0;}
arr[x]++;
})
var arr1 = Object.keys(arr);
arr2 = arr1.map(x=>arr[x])
/* arr1
foo,bar,zoom
*/
/* arr2
2,4,1
*/