重新映射对象属性

时间:2011-07-24 17:03:43

标签: javascript object

考虑这个定义对象:

var map = {
  'Username':
  {
    'user-name': 'userName',
    'first-name': 'fName',
    'last-name': 'lName',
    'active': 'isActive'
  }
}

如何重新映射对象,例如:

data: 
{
   'user-name': SamN,
   'first-name': Sam,
   'last-name': Norbert,
   'active': 1
}

得到这样的输出:

data:
{
   'userName': SamN,
   'fName': Sam,
   'lName': Norbert,
   'isActive': 1
}

2 个答案:

答案 0 :(得分:5)

简单地遍历属性:

for(var prop in data) {
    if(data.hasOwnProperty(prop) && prop in map.Username) {
        data[map.Username[prop]] = data[prop];
        delete data[prop];
    }
}

这会就地更改对象。如果要创建新对象,只需在新的空对象上设置属性。

您也可以迭代map.Username的属性。

答案 1 :(得分:0)

const map = {
  'Username':
  {
    'user-name': 'userName',
    'first-name': 'fName',
    'last-name': 'lName',
    'active': 'isActive'
  }
}
const newObj = {};
const oldObj = { 'user-name': 'SamN', 'first-name': 'Sam', 'last-name': 'Norbert', 'active': 1 };

// Solution
Object.keys(oldObj).map((v, k) => {
    newObj[map.Username[v]] = v
})

console.log(newObj) // {userName: "user-name", fName: "first-name", lName: "last-name", isActive: "active"}