javascript - 使用 lodash 重新映射属性名称和值

标签 javascript underscore.js lodash

我有这个数组:

aItems = [{
    "PropertyA": "apple",
    "PropertyB": "banana",
    "PropertyC": "dog",
    "PropertyD": "hotdog",
    "PropertyE": "coldcat",
    "PropertyF": "Y",
    "PropertyG": "N"
},
...,
{
    "PropertyA": "this",
    "PropertyB": "is",
    "PropertyC": "json",
    "PropertyD": "code",
    "PropertyE": "wow",
    "PropertyF": "N",
    "PropertyG": "N"
}]

我想使用 lodash 来获得这个结果:

aItems = [{
    "propertyA": "apple",
    "propertyB": "banana",
    "propertyC": "dog",
    "propertyD": "hotdog",
    "propertyE": "coldcat",
    "propertyNEW": true,
    "propertyG": false
},
...,
{
    "propertyA": "this",
    "propertyB": "is",
    "propertyC": "json",
    "propertyD": "code",
    "propertyE": "wow",
    "propertyNEW": false,
    "propertyG": false
}]

我想将每个属性名称与其他名称进行映射,并更改某些特定属性的值。 我可以使用 lodash 来完成吗?

最佳答案

是的,从 lodash v3.8.0 开始,您可以以任何需要的方式重新映射对象

ES5代码

var items = [ { oldKey: 'oldValue' /*...*/ } ]

var keyMapping = { oldKey: 'newKey' /*...*/ }
var valueMapping = { oldValue: 'newValue' /*...*/ }

var remapper = function(item){
  return _(item) // lodash chain start
    .mapKeys( function(v, k){ return keyMapping[k] } )
    .mapValues( function(v){ return valueMapping[v] } )
    .value() // lodash chain end
}

var remappedItems = items.map(remapper)

ES2015/ES6代码

let items = [ { oldKey: 'oldValue' /*...*/ } ]

let keyMapping = { oldKey: 'newKey' /*...*/ }
let valueMapping = { oldValue: 'newValue' /*...*/ }

let remapper = item => _(item) // lodash chain start
  .mapKeys( (v, k)=> keyMapping[k] )
  .mapValues( v => valueMapping[v] )
  .value() // lodash chain end

let remappedItems = items.map(remapper)

关于javascript - 使用 lodash 重新映射属性名称和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30940120/

相关文章:

javascript - Backbone 一对多关系

JavaScript 扩展数组

javascript - es5-shim 和 underscore.js?

javascript - 所有 Lodash 函数 "Not A Function"

javascript - Django + Javascript - 我们如何验证执行 Javascript 的 Django 值不为空?

javascript - 将动态 html 表从一个页面发送到另一个页面

java - Nashorn:如何选择要调用的构造函数

javascript - 使用 HTML 和 CSS 打印文本然后更改颜色

javascript - 合并缺少键的对象

javascript - Lodash forEach 函数省略