Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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_Node.js_String_Split - Fatal编程技术网

Javascript 如何创建具有最大元素的唯一键数组?

Javascript 如何创建具有最大元素的唯一键数组?,javascript,arrays,node.js,string,split,Javascript,Arrays,Node.js,String,Split,我试图从组中找出最大的数目,并将它们分配到一组唯一的组中。我试着使用map和lodash uniq,但没有帮助 范例 假设主数组由一个typeid和一个用冒号(:)分隔的数字组成 我想从每个typeid中找出最大的数字,然后他们从中创建一个数组 从下面的示例中,我尝试生成如下输出 ["abcdwidets:6564","nightly:6543"] 6564和6543是各自组中的最大值 代码 将数组放入,并获取每个键的最大数字(前面的字符串:)。然后,映射返回到一个数组: const mai

我试图从组中找出最大的数目,并将它们分配到一组唯一的组中。我试着使用map和lodash uniq,但没有帮助

范例

假设主数组由一个typeid和一个用冒号(:)分隔的数字组成 我想从每个typeid中找出最大的数字,然后他们从中创建一个数组

从下面的示例中,我尝试生成如下输出

["abcdwidets:6564","nightly:6543"]
6564和6543是各自组中的最大值

代码

将数组放入,并获取每个
键的最大数字(
前面的字符串:
)。然后,映射返回到一个数组:

const mainarray=[“abcdwidets:1234”,“abcdwidets:3432”,“abcdwidets:6564”,“夜间:3423”,“夜间:6543”];
const result=[…mainarray.reduce((r,s)=>{
常数[k,v]=s.split(“:”);
如果(!r.has(k)| r.get(k)`${k}:${v}`);

控制台日志(结果)U需要像这样将主阵列拆分为2个阵列

arr1=['abcdwidets', 'nightly', ..., n];
arr2=[1628, 0378, 6144, ..., n];

一旦你将主数组拆分为这两个数组,你只需进行气泡排序,然后将这两个数组再次转换为1。

这很神奇,在主数组上执行reduce时,你能告诉我们“…”的用法吗?将贴图展开到数组中,调用创建数组。返回的数组的格式为
[[key,value],[key,value]等]
。可以稍微干净一点
const result=[…mainarray.reduce((r,s)=>([k,v])=>([k,v])((r[k]| 0“{k:${v}”)
So
Map.prototype.set
实际上返回修改后的
Map
,您可以内联函数来拆分每个映射entry@NeilLunn-谢谢。我知道1Map.set()`返回映射的实例,我以前用它编写reduce方法。然而,我发现它的可读性较差。
arr1=['abcdwidets', 'nightly', ..., n];
arr2=[1628, 0378, 6144, ..., n];