簡體   English   中英

將對象分為三部分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM