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
*/