【问题标题】:How to change the key names to values and values to key names in array of objects in javascript如何将键名更改为值,并将值更改为javascript中对象数组中的键名
【发布时间】:2016-05-20 14:27:17
【问题描述】:
我有这样的对象数组
[{
"First Name": "fname",
"Last Name": "lname"
}, {
"Root cause": "root"
}, {
"Comapany Name": "company"
}]
我想把上面的对象数组转换成这样的
[{
"fname": "First Name",
"lname": "Last Name"
}, {
"root": "Root cause"
}, {
"company": "Comapany Name"
}]
请任何人帮助我。
【问题讨论】:
标签:
javascript
arrays
node.js
underscore.js
【解决方案1】:
应该这样做
var arr = [ {"First Name":"fname", "Last Name":"lname"},
{"Root cause":"root"},
{"Comapany Name":"company"}
];
var newArr = [];
for(var i = 0; i < arr.length; ++i) {
var obj = {};
for(key in arr[i]) {
if (arr[i].hasOwnProperty(key)) {
obj[arr[i][key]] = key;
}
}
newArr.push(obj);
}
【解决方案2】:
您可以使用Object.keys 获取对象中的键数组。这可用于访问对象中的每个值。
例如:
var newArray = myArray.map(function(obj){
var keys = Object.keys(obj);
var newObj = {};
keys.forEach(function(key){
var newKey = obj[key];
newObj[newKey] = key;
});
return newObj;
});
【解决方案4】:
此代码不会创建新实例,它只是反转同一对象中的键:
var hash = { 'key1': 'val1', 'key2': 'val2' };
console.log('before', hash)
for (var key in hash) {
hash[hash[key]] = key;
delete hash[key];
}
console.log('after', hash)
这个创建了一个新的对象,保持原来的不变:
var hash = { 'key1': 'val1', 'key2': 'val2' };
console.log('before', hash)
var newHash = {};
for (var key in hash) {
newHash[hash[key]] = key;
}
console.log('new hash inverted', newHash)
您可以创建一个函数来重用代码。
【解决方案5】:
你可以这样做。
var arr1 =[{"First Name":"fname", "Last Name":"lname"},
{"Root cause":"root"},
{"Comapany Name":"company"}
]
var arr2=[];
for(var i=0; i<arr1.length; i++){
var obj = {};
var foo= arr1[i];
for(var key in foo){
obj[foo[key]]=key;
}
arr2.push(obj);
}
console.log(arr2);
【解决方案6】:
只需遍历所有对象数组并交换对象键的对象值:
var a = [{"First Name": "fname", "Last Name": "lname"}, {"Root cause": "root"}, {"Comapany Name": "company"}];
a.forEach(function(o) {
for (var key in o) {
o[o[key]] = key;
delete o[key];
}
});
console.log(a);