将字符串转到_内的对象.each

Turn string to object within _.each

本文关键字:对象 each 字符串      更新时间:2023-09-26

我在Angular控制器中使用下划线,并试图将字符串转换为具有多个属性的对象。

vm.availableGames = _.each(availableGames, function(game) {
  game.name = game;
  if (_.contains(user.allowed_games.games, game)) {
    game.allowed = true;
  } else {
    game.allowed = false;
  }
});

availableGames是可用游戏的字符串数组allowed_games也是允许游戏的字符串数组

我的目标是创建一个包含所有可用游戏的对象数组(vm.availableGames)。每个对象都有一个name属性(原始字符串)和一个允许的属性(布尔值)。

上述代码导致Cannot assign to read only property...错误。如果不遇到这个错误,我该如何实现我的目标?

这应该有效:

vm.availableGames = _.map(availableGames, function(game) {
  return {
    name: game,
    allowed: _.contains(user.allowed_games, game)
  };
});

并且没有下划线:

vm.availableGames = availableGames.map(function(game) {
  return {
    name: game,
    allowed: (user.allowed_games.indexOf(game) !== -1)
  };
});

它不是下划线,但它能工作吗?

vm.availableGames = [];
for( game in availableGames ) {
    if( allowed_games.indexOf(game) !== -1 )
        vm.availableGames.push({ allowed: true, name: availableGames[game] });
    else
        vm.availableGames.push({ allowed: false, name: availableGames[game] });
}
for( game in allowed_games ) {
    if( availableGames.indexOf(allowed_games[game]) !== -1 )
        vm.availableGames.push({ allowed: true, name: allowed_games[game] });
}

编辑:使用forEach回答。。。

注意:只有当allowed_games中的所有内容都在available games中时,此操作才有效。

availableGames.forEach(function( game ) {
    vm.availableGames.push({ allowed: allowed_games.indexOf(game) !== -1, name: game });
});