Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
如何在typescript/javascript中过滤数组中的唯一id_Javascript_Arrays_Typescript - Fatal编程技术网

如何在typescript/javascript中过滤数组中的唯一id

如何在typescript/javascript中过滤数组中的唯一id,javascript,arrays,typescript,Javascript,Arrays,Typescript,我有一个对象数组,如何在typescript/javascript中过滤数组中唯一的id 列表数组- [{ global_id: "269a8bded9bd4ecaa0e501c170a71f5a" icon: "/odb/icons/ip/ip_32.svg" id: "269a8bded9bd4ecaa0e501c170a71f5a" }, { global_id: "269a8bded9bd4ecaa0e501c170a71f5a" icon: "/

我有一个对象数组,如何在typescript/javascript中过滤数组中唯一的id

列表数组-

[{
    global_id: "269a8bded9bd4ecaa0e501c170a71f5a"
    icon: "/odb/icons/ip/ip_32.svg"
    id: "269a8bded9bd4ecaa0e501c170a71f5a"
}, {
    global_id: "269a8bded9bd4ecaa0e501c170a71f5a"
    icon: "/odb/icons/ip/ip_32.svg"
    id: "269a8bded9bd4ecaa0e501c170a71f5a"
}, {
    global_id: 348
    icon: "/odb/icons/ip/ip_32.svg"
    id: 348
}, {
    global_id: 201
    icon: "/odb/icons/ip/ip_32.svg"
    id: 201
}]
等等,

我想以这样一种方式过滤我的对象数组,而不是重复元素列表

list.filter()
如果可以,我想使用

qby(列表“id”)
在lodash中可用,但我想使用typescript/javascrpt.filter方法。
请指导。

这是一个使用Array.filter的解决方案

函数uniqueArrayOfObject(数组,keyToBeUnique){
//如果第二次出现关键点,则通过查看下一个对象进行筛选
返回array.filter((x,xi)=>!array.slice(xi+1)
.一些(y=>y[keyToBeUnique]==x[keyToBeUnique]);
}
函数getRndInteger(最小值、最大值){
返回Math.floor(Math.random()*(max-min))+min;
}
常量键=[
‘a’、‘b’、‘c’、‘d’、‘e’、‘f’、‘g’,
];
const generatedArray=[];
对于(设i=0;i<100000;i+=1){
生成阵列({
uniqueKey:keys[getRndInteger(0,keys.length-1)],
瓦尔:我,
});
}
const start=Date.now();
const unique=uniqueArrayOfObject(generatedArray,'uniqueKey');
控制台日志(唯一);
log(`time${Date.now()-start}ms到unique`)使用,以及

(代码)var数据是从以下几个方面来看的:代码:var数据是从以下几个方面来看的:var数据是从以下几个方面来看的::,图标::“/odb/图标/Ib/图标/ip/ip/ip/ip/ip/ip/ip/ip/ip/ip/ip/ip/ip/ip/ip/ip/ip/ip-32.svg”图标,svg,id:“id:id:id:“269AA8/B/B/B/B/B/图标/ICB/图标/ICB/图标/ICB/ICB/ICB/图标/ip/ip/ip/ip/ip/ip/ip/ip/ip/32.32.32.SV32.SV32.SV32.SV32.SV32.SV32.SV32.svg”,图标,id,”id,id,”id,”id,”id,”id,id,id,”id,”id,”id::::“:“269988888888888",id:201}]; const res=[…data.reduce((a,c)=>{ a、 集合(c.global_id,c); 返回a; },新映射())。值()];
控制台日志(res)可能的重复,如果数组未排序,我们必须排序并执行此操作。如果全局_id后面的值相同,则不必排序。如果不是,是的,你必须这样做。或者,您可以使用一个函数来确定哪一个数组计数为10000,这是性能方面的最佳方法。请指导。我已经用一个更快的解决方案编辑了我的文章。它在使用时给出了错误,表示类型IterableTerator不是数组类型。使用上面的编译器选项。@JavascriptCoder这可能是因为您需要在.tsconfig文件(或webpack.config.js或.babelrc,具体取决于您的设置)中指定更高的ECMAScript版本。可能需要尝试es2016、es2017或es2018。