[英]separate an object into three parts
如果我有這樣的對象:
var myObj = [
{'name': 'Mike', 'number' : 'b1' , 'level' : 0 },
{'name': 'Tom', 'number' : 'b2' , 'level' : 0 }
];
如何創建三個獨立的對象,例如:
"names" :
{
'name1' : 'Mike',
'name2' : 'Tom',
..}
"numbers" :
{
'number1' : 'b1',
'number2' : 'b2',
..}
"levels" :
{
'level1' : '0',
'level2' : '0',
...
}
您可以將鍵和元素迭代次數用作屬性。
var myObj = [{ 'name': 'Mike', 'number': 'b1', 'level': 0 }, { 'name': 'Tom', 'number': 'b2', 'level': 0 }], result = {}; myObj.forEach(function (a, i) { Object.keys(a).forEach(function (k) { result[k + 's'] = result[k + 's'] || {}; result[k + 's'][k + (i + 1)] = a[k]; }); }); console.log(result);
使用Object.keys
函數,ES6箭頭函數表達式和預定義parts
對象的替代解決方案:
var myObj = [{'name': 'Mike', 'number': 'b1', 'level': 0},{'name': 'Tom', 'number': 'b2', 'level': 0}],
parts = {'names': {}, 'numbers': {}, 'levels': {}};
myObj.forEach(function(obj, i){
Object.keys(obj).forEach((k) => (parts[k +"s"][k +(i+1)] = obj[k]));
});
console.log(JSON.stringify(parts, 0, 4));
輸出:
{
"names": {
"name1": "Mike",
"name2": "Tom"
},
"numbers": {
"number1": "b1",
"number2": "b2"
},
"levels": {
"level1": 0,
"level2": 0
}
}
JS objects
鍵必須unique
。
隨后的name : Tom
聲明name : Tom
覆蓋了您先前的name : Tom
。
代碼:
var newObj = {};
newObj.names = {};
newObj.numbers = {};
newObj.levels = {};
for (var i in myObj) {
newObj.names.name = myObj[i].name;
newObj.numbers.number = myObj[i].number;
newObj.levels.level = myObj[i].level;
}
console.log(newObj);
演示小提琴: https : //jsfiddle.net/29pb33dj/
使用正確的索引鍵更新了答案:
var newObj = {};
newObj.names = {};
newObj.numbers = {};
newObj.levels = {};
for (var i in myObj) {
newObj.names[i] = myObj[i].name;
newObj.numbers[i] = myObj[i].number;
newObj.levels[i] = myObj[i].level;
}
console.log(newObj);
工作演示: https : //jsfiddle.net/29pb33dj/1/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.