【发布时间】:2015-03-17 00:24:39
【问题描述】:
我有一个运动列表/数组,默认情况下它们都带有checked = true,在下面的函数中你可以看到这一行intersectedSports = _.intersection(sportIds, sportChecked.sport);,其中sportIds是运动ID的完整列表,sportChecked.sport是带有checked = false 的运动,是用户未选中的运动。
记住:所有运动默认为checked = true。
这是一个包含 30 个项目的数组,每个项目都有一个唯一的 id,正如我提到的所有运动项目都是 checked = true,但我需要 id: 10 默认为 checked = false。
在你看到的所有这些代码的背后,已经有一个结构可以将用户checked = false 的项目保存在数据库中,这就是为什么你在这里看到这一行sport.checked = !_.includes(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
【问题讨论】:
-
假设 id 为 10 的运动始终在运动数组中,
_.findWhere(sports, {id: 10}).checked = false。 -
@mathewbergt 我应该把它放在哪里?我已经做过并且没有工作,
id: 10仍然是checked = true -
在不知道您的代码是什么样子的情况下,我无法提供太多帮助。 Here 是一个非常基本的示例,我在其中设置了一个运动数组并调用 _.findWhere 函数将 id: 10 的运动设置为 checked=false。
-
@mathewbergt 将其作为答案发布,以便我为您提供最佳答案检查。
标签: javascript arrays underscore.js lodash