替换对象值 lodash

新手上路,请多包涵

可以说我有一个对象

var users = [
  { Mike:    'true' },
  { Tony:    'True' },
  { Ismael:  'RU' }
];

我有这个问题,我想标准化我的对象,基本上用布尔值替换“true”或“True” true 其他任何东西都应该是 false

顺便说一句,我可能有 users 的语法错误,chrome 告诉我 users.constructor == Object 而不是 Array

如何使用 lodash 实现此目的?

原文由 chefcurry7 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 489
2 个回答

您不必使用 lodash。您可以使用本机 Array.prototype.map() 功能:

 const users = [
  { Mike: 'true' },
  { Tony: 'True' },
  { Ismael: 'RU' },
];
const normalisedUsers = users.map(user =>
  // Get keys of the object
  Object.keys(user)
   // Map them to [key, value] pairs
   .map(key => [key, user[key].toLowerCase() === 'true'])
   // Turn the [key, value] pairs back to an object
   .reduce((obj, [key, value]) => (obj[key] = value, obj), {})
);
console.log(normalisedUsers);

函数式编程!

原文由 Michał Perłakowski 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 Lodash 中,您可以使用 _.mapValues

 const users = [
  { Mike: 'true' },
  { Tony: 'True' },
  { Ismael: 'RU' },
];
const normalisedUsers = users.map(user =>
  _.mapValues(user, val => val.toLowerCase() === 'true')
);
console.log(normalisedUsers);
 <script src="https://cdn.jsdelivr.net/lodash/4.16.3/lodash.min.js"></script>

原文由 4castle 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题