javascript - ES6 相当于 lodash _.mapValues

标签 javascript object ecmascript-6 lodash

将 lodash _.mapValues 转换为 ES6 有哪些不同的方法。

代码:

var fruits= {
  'apple':    { 'name': 'apple',    'number': 5},
  'orange': { 'name': 'orange', 'number': 10 }
};

_.mapValues(fruits, 'number');

输出:

{ 'apple': 5, 'orange': 10 }

最佳答案

将对象的entries减少到另一个对象中,只从值中提取number:

var fruits= {
  'apple':    { 'name': 'apple',    'number': 5},
  'orange': { 'name': 'orange', 'number': 10 }
};

console.log(Object.entries(fruits)
  .reduce((a, [key, { number }]) => {
    a[key] = number;
    return a;
  }, {}
));

在较新的环境中,您可以通过使用 Object.fromEntries 来映射到键值对数组的数组,从而使其更加优雅:

var fruits= {
  'apple':    { 'name': 'apple',    'number': 5},
  'orange': { 'name': 'orange', 'number': 10 }
};

console.log(Object.fromEntries(
  Object.entries(fruits).map(([key, { number }]) => [key, number])
));

关于javascript - ES6 相当于 lodash _.mapValues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51393988/

相关文章:

c# - 如何在 C# 中从 activex 或 dll 调用 javascript 函数

javascript - 为什么 AngularJS Controller 中的另一个变量会发生变化?

javascript - 有没有一种简单的方法可以在 Javascript 中完全卡住对象及其子对象(Deep Freeze)?

javascript - 为什么输入错误: error: Uncaught TypeError: Cannot read property 'indexOf' of undefined

javascript - typescript (Angular2): Passing objects to functions -> possible memory leaks?

reactjs - ReactJS错误: Invalid attempt to destructure non-iterable instance

javascript - 并排显示 div 向左浮动不起作用

c++ - 调用成员函数

javascript - ES6 中的惰性模块加载是如何工作的

javascript - Babeljs 为正则表达式 {m,n} 量词产生意外错误