gpt4 book ai didi

javascript - 根据属性创建唯一的数组

转载 作者:行者123 更新时间:2023-11-28 14:45:23 25 4
gpt4 key购买 nike

我想根据对象属性创建一个没有重复对象的数组(所有对象都是唯一的),如果它是唯一的,我想将它推送到这个数组。在将其发送到我的函数之前,我使用:

vm.initResponse = angular.fromJson(response);

$$hashKey 推送到每个对象。

    function initDropDown(list){
console.log('initDropDown', list);
for (var key in list) {
//remove angularjs $$hashKey
var obj = JSON.parse(angular.toJson(list[key]));
//the object I want to push into new array
var filter = {};
filter.prop = obj.SUGNIA;
//if indexOf returns -1 the array does not have this object
if(vm.stockOptionsSelect.indexOf(filter) < 0){
vm.stockOptionsSelect.push(filter);
}

}
}

列表数组有许多具有不同 SUGNIA 的对象,我想创建一个包含所有唯一对象的数组。

我已经删除了$$hashKey已解释remove-hashKey并使用 indexOf - indexOf .

列出数据 -

[
{
"uid": "23",
"time": "2017-10-01 16:00:35.515",
"SUGNIA": "stock",
"SECURITYNAME": "IBM",
"INDEX_IN_UI": 5
},
{
"uid": "29",
"SECURITYNUM": 629014,
"time": "2017-09-28 16:32:26.432",
"SUGNIA": "holdings",
"SECURITYNAME": "FaceBook",

"INDEX_IN_UI": 10
},
{
"uid": "id",
"time": "2017-09-28 16:33:20.25",
"SUGNIA": "stock",
"SECURITYNAME": "google",
"INDEX_IN_UI": 0
}
]

我的结果应该是:

[{"prop":"stock"}, {"prop":"holding"}]

但是我得到了重复的内容。

最佳答案

indexOf函数使用严格相等 === 进行比较,并且由于传递给此函数的对象是刚刚创建的对象,因此它将始终返回 -1

要解决此问题,您可以使用 ...some(...)函数代替。

这是一个例子:

if(!vm.stockOptionsSelect.some(e => e.prop == obj.SUGNIA)){
vm.stockOptionsSelect.push({prop:obj.SUGNIA});
}

关于javascript - 根据属性创建唯一的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46527012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com