Javascript 从选中项的数组中删除特定id
我有一个运动的列表/数组,默认情况下,所有运动都带有Javascript 从选中项的数组中删除特定id,javascript,arrays,underscore.js,lodash,Javascript,Arrays,Underscore.js,Lodash,我有一个运动的列表/数组,默认情况下,所有运动都带有checked=true,在下面的函数中,您可以看到这一行intersectedSports=.\uuuux.intersection(sportid,sportChecked.sport)其中sportIds是运动ID的完整列表,而sportChecked.sport是用户未选中的运动checked=false 请记住:默认情况下,所有运动项目均checked=true 这是一个由30个项目组成的数组,每个项目都有一个唯一的id,正如我提到的
checked=true
,在下面的函数中,您可以看到这一行intersectedSports=.\uuuux.intersection(sportid,sportChecked.sport)代码>其中sportIds
是运动ID的完整列表,而sportChecked.sport
是用户未选中的运动checked=false
请记住:默认情况下,所有运动项目均checked=true
这是一个由30个项目组成的数组,每个项目都有一个唯一的id
,正如我提到的,所有的运动项目都是checked=true
,但是我需要id:10
在默认情况下是checked=false
在您看到的所有这些代码背后,已经有一个结构可以将用户选中的项目保存在DB中checked=false
,这就是为什么您在这里看到这一行sport.checked=!\。包括(intersectedSports,sport.id)代码>
所以,为了做我想做的事情,我猜:我需要把id:10
和checked=false
放在我上面提到的var=intersectedSports
中,除非你有更好的建议给我。。。那么,你向我的朋友推荐什么呢
var sportIds = _.pluck(sports, 'id'),
intersectedSports = _.intersection(sportIds, sportChecked.sport);
if (sports.length) {
sports = _.map(sports, function(sport) {
sport.checked = !_.includes(intersectedSports, sport.id);
return sport;
});
}
以防万一:我使用的是Lodash和Angular您可以将逻辑简化为以下内容:
// build a list of the sports that should be unchecked
var unchecked = sportChecked.sport.concat(10);
// add a checked property to each sport
_.each(sports, function(sport){
sport.checked = !_.contains(unchecked, sport.id);
});
假设id为10的运动始终在运动数组中,.findWhere(sports,{id:10}).checked=false
@mathewbergt我应该把它放在哪里?我已经这样做了,但是没有工作,id:10
仍然是checked=true
而不知道你的代码是什么样子,我帮不了你多少忙。这是一个非常基本的示例,我在其中设置了一个运动数组,并调用u.findWhere函数将id为10的运动设置为checked=false。@mathewbergt将其作为答案发布,以便我可以为您提供最佳答案检查。