gpt4 book ai didi

javascript - 如何简化从数组中删除 jQuery

转载 作者:行者123 更新时间:2023-12-03 08:49:03 25 4
gpt4 key购买 nike

我有一个对象和一个应保留在该对象中的类别数组。这个剪辑https://jsfiddle.net/h10rkb6s/2/ (参见日志)有效,但我似乎无法动摇这样的想法:对于简单的搜索和保留任务来说,它太复杂了。

var thz_icon_source = {"Spinners":["spinnericon1","spinnericon2"],"Awesome":["awesomeicon1","awesomeicon2"],"Others":["othericon1","othericon2"]};
var $categories = '["Spinners","Awesome"]';

var $CatsArray = JSON.parse($categories);
var groups = [];
for(var k in thz_icon_source) groups.push(k);



$.each($CatsArray,function(i,keep){

var index = groups.indexOf(keep);
if (index !== -1) {
groups.splice(index, 1);
}

});

for (var i = 0; i < groups.length; i++) {
delete thz_icon_source[groups[i]];
}

我尝试过

   $.each(thz_icon_source,function(category,icons){

$.each($CatsArray,function(i,keep){

var index = category.indexOf(keep);

if (index !== -1) {
delete thz_icon_source[category];
}

});

});

但这仅当 1 项位于我的搜索数组内时才有效。任何帮助表示赞赏。

最佳答案

无需遍历 $CatsArray 来找出应删除哪些。您将需要迭代对象的键,并找出每个对象是否应删除它,以便按该键进行过滤。

保持脚本的前 3 行不变,您可以简化为

var keysToDelete = Object.keys(thz_icon_source).filter(function(groupName) {
return $CatsArray.indexOf(groupName) == -1;
});

(如果您喜欢的话,$.grep 将是 filter 方法的 jQuery 主义)。

但是假设我们甚至不需要数组中的这些组,您可以简单地这样做

for (var groupName in thz_icon_source)
if ($CatsArray.indexOf(groupName) == -1)
delete thz_icon_source[groupName];

但是,我建议不要从该对象中删除项目,而是创建一个仅包含您想要保留的项目的新对象。使用起来更容易:

var kept = {};
for (var i=0; i<$CatsArray.length; i++)
kept[$CatsArray[i]] = thz_icon_source[$CatsArray[i]];

关于javascript - 如何简化从数组中删除 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32763371/

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