Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数组拆分为匹配值的数组_Javascript_Arrays - Fatal编程技术网

Javascript 将数组拆分为匹配值的数组

Javascript 将数组拆分为匹配值的数组,javascript,arrays,Javascript,Arrays,我有一个值数组,类似于: ["100", "330", "22", "100", "4.7", "0.01", "0.01", "330", "0.01", "100", "47", "22", "100", "0.01"] 使用JavaScript,我希望将此数组拆分为多个数组,这些数组中只有匹配的字符串,如下所示: ["100", "100", "100"] ["330", "330"] ["22", "22"] ["0.01", "0.01", "0.01", "0.01"] ["47"

我有一个值数组,类似于:

["100", "330", "22", "100", "4.7", "0.01", "0.01", "330", "0.01", "100", "47", "22", "100", "0.01"]
使用JavaScript,我希望将此数组拆分为多个数组,这些数组中只有匹配的字符串,如下所示:

["100", "100", "100"]
["330", "330"]
["22", "22"]
["0.01", "0.01", "0.01", "0.01"]
["47"]
["4.7"]

在此方面的任何帮助都将不胜感激!谢谢

下面是一个您想要使用的示例

const data=[“100”、“330”、“22”、“100”、“4.7”、“0.01”、“0.01”、“330”、“0.01”、“100”、“47”、“22”、“100”、“0.01”];
const unique=新集合(数据);
for(让num of unique){
log(data.filter(d=>d==num));
}
您可以使用a进行收集,并获得结果值

由内而外:

  • 数据一起使用
    ,并将
    映射
    实例用作
    初始值
  • 作为回调,获取并收集每个组的值

    其他方法:

    • 用于将iterable的所有项与
    • 用于具有展开的默认值
  • 从映射中获取值,并将其用作

  • 。这将生成一个包含所有值的数组
var数据=[“100”、“330”、“22”、“100”、“4.7”、“0.01”、“0.01”、“330”、“0.01”、“100”、“47”、“22”、“100”、“0.01”],
结果=数组。从(数据)
.reduce((m,v)=>m.set(v,[…(m.get(v)| |[]),v]),新映射)
.values()
);
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
使用
reduce
方法和
对象。值

   //Go thru each value in `arr` array and convert into object with 
   //keys as unique (value in array) and values array of value repetitions.


   {
     "100": ["100", "100"],
     "22": ["22"],
     ...
     ...    
   }

   //Use the Object.values to get the Values as array of arrays
const arr=[“100”、“330”、“22”、“100”、“4.7”、“0.01”、“0.01”,
"330", "0.01", "100", "47", "22", "100","0.01"];
const updated=Object.values(
arr.reduce(
(会计科目,当前)=>(
(acc[curr]=acc中的curr?[…acc[curr],curr]:[curr]),acc
),
{}
)
);

控制台日志(更新)下面是使用
reduce
按值分组的另一种方法

它简化为一个对象,然后转换为一个数组

let valueArray=[“100”、“330”、“22”、“100”、“4.7”、“0.01”、“0.01”、“330”、“0.01”、“100”、“47”、“22”、“100”、“0.01”];
让groupedByValue=Object.values(valueArray
.减少((acc,x)=>{
设arr=acc[x]| |[];
arr.push(x);
acc[x]=arr;
返回acc;
},{}));

console.log(groupedByValue)也可以这样做:

const{log}=console;
常数arr=[“100”、“330”、“22”、“100”、“4.7”、“0.01”、“0.01”、“330”、“0.01”、“100”、“47”、“22”、“100”、“0.01”];
log([…新集合(arr)].map(x=>arr.filter(y=>y==x));

到目前为止您尝试了什么?我还没有尝试过任何东西,我对JavaScript还比较陌生,不知道从哪里开始这部分内容似乎无效:
“0.01”、“330”、“0.01”
分散累加器是一种不好的做法。请考虑返回累加器。@ Siva,你能给我解释一下代码,这样我能更好地理解它吗?我喜欢理解我正在使用的代码!当然@Alex我将很快添加详细信息。@Alex Morrison用评论更新了答案。希望这能有所帮助。@SivaKondapiVenkata你让事情变得比你想象的复杂得多,我喜欢这个解决方案!您是否可以为我添加一些注释,以帮助我理解和学习我正在使用的代码:)