2016-11-28 3 views
1

나는 이것을 수행하는 방법에 대해 고심하고 있습니다. 나는이 목적이 있습니다JavaScript : 배열이있는 객체를 객체가있는 배열로 분해하는 중

var objData = { 
    _Input_396__REPEAT15_374:["Bedroom2", "Bedroom3", "Bedroom4"], 
    _Input_396__REPEAT15_375:["1st", "2nd", "3rd"], 
    _Input_396__REPEAT15_376:["122", "133", "144"], 
    _Input_396__REPEAT15_377:["122", "133", "144"], 
    _Input_396__REPEAT15_378:["Bamboo", "FloorNone", "Cork"] 
}; 

각 배열의 길이가, 객체에서 다른 사람과 동일합니다 그러나 길이가 변경됩니다, 그래서 3의 길이는 늘 항상 길이.

나는 이것으로 해체해야

var arrData = [ 
    { 
    _Input_396__REPEAT15_374:"Bedroom2", 
    _Input_396__REPEAT15_375:"1st", 
    _Input_396__REPEAT15_376:"122", 
    _Input_396__REPEAT15_377:"122", 
    _Input_396__REPEAT15_378:"Bamboo" 
    }, 
    { 
    _Input_396__REPEAT15_374:"Bedroom3", 
    _Input_396__REPEAT15_375:"2nd", 
    _Input_396__REPEAT15_376:"133", 
    _Input_396__REPEAT15_377:"133", 
    _Input_396__REPEAT15_378:"FloorNone" 
    }, 
    { 
    _Input_396__REPEAT15_374:"Bedroom4", 
    _Input_396__REPEAT15_375:"3rd", 
    _Input_396__REPEAT15_376:"144", 
    _Input_396__REPEAT15_377:"144", 
    _Input_396__REPEAT15_378:"Cork" 
    } 
]; 

이를 달성하는 가장 좋은 방법은 무엇입니까?

답변

8

개체의 키와 배열을 반복하고 모든 항목으로 새 배열을 만들 수 있습니다.

방법이어서, truthy 값 주어진 배열을

  • 패턴 x = x || defaultValue 테스트 x을 반복 대한 오브젝트

  • Array#forEach의 고유 속성

    • Object.keys를 사용하지 않을 경우 defaultValuex에 할당하십시오.

    var objData = { _Input_396__REPEAT15_374: ["Bedroom2", "Bedroom3", "Bedroom4"], _Input_396__REPEAT15_375: ["1st", "2nd", "3rd"], _Input_396__REPEAT15_376: ["122", "133", "144"], _Input_396__REPEAT15_377: ["122", "133", "144"], _Input_396__REPEAT15_378: ["Bamboo", "FloorNone", "Cork"] }, 
     
        arrData = []; 
     
    
     
    Object.keys(objData).forEach(function (k) { 
     
        objData[k].forEach(function (a, i) { 
     
         arrData[i] = arrData[i] || {}; 
     
         arrData[i][k] = a; 
     
        }); 
     
    }); 
     
    
     
    console.log(arrData);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

  • 2

    당신은 함수형 프로그래밍 스타일이 ES6 스크립트와 함께 할 수 있습니다 :

    var objData = { 
     
        _Input_396__REPEAT15_374:["Bedroom2", "Bedroom3", "Bedroom4"], 
     
        _Input_396__REPEAT15_375:["1st", "2nd", "3rd"], 
     
        _Input_396__REPEAT15_376:["122", "133", "144"], 
     
        _Input_396__REPEAT15_377:["122", "133", "144"], 
     
        _Input_396__REPEAT15_378:["Bamboo", "FloorNone", "Cork"] 
     
    }; 
     
    
     
    var arrData = objData[Object.keys(objData)[0]].map((_, i) => 
     
        Object.keys(objData).reduce((acc, key) => (acc[key] = objData[key][i], acc), {}) 
     
    ); 
     
    
     
    console.log(arrData);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    관련 문제