2017-12-13 20 views
0

나는 건물 객체로 .reduce()을 실험하고있다.우리는 얼마나 많은 반복을 거치지 않고 객체를 생성하기 위해 reduce()를 할 것인가?

아래 코드는 개체를 성공적으로 빌드하지만 낭비입니다. .reduce()은 배열에 3 개의 항목이 포함되어 있기 때문에 루프를 3 번 ​​순환합니다. 그러나 키와 값을 할당하는 방법은 한 번만 순환해야합니다. .reduce() 사이클을 한 번 또는 번갈아 수행하는 방법이 있습니까?이 문제에 접근하는보다 효율적인 방법이 있습니까? 어떤 의견을 주셔서 감사합니다!

"use strict"; 
 

 
var creatureArray = []; 
 
var creatureObject = {} 
 

 
creatureArray = ["Skeleton", "Sword", 10]; 
 

 
creatureObject = creatureArray.reduce((accumulator, currentValue, index, array) => { 
 
    accumulator[array[0]] = { 
 
     weapon: array[1], 
 
     damage: array[2] 
 
    } 
 
    return accumulator; 
 
}, {}); 
 

 
console.log(creatureObject);

답변

2

전혀 여기 .reduce()를 사용 싶어 왜 확실하지. 당신은 단지 그 세 항목을 가지고 배열을 기대하는 것, 그래서 그들을 할당하십시오.

"use strict"; 
 

 
var creatureArray = ["Skeleton", "Sword", 10]; 
 

 
var creatureObject = { 
 
    [creatureArray[0]]: { 
 
     weapon: creatureArray[1], 
 
     damage: creatureArray[2] 
 
    } 
 
} 
 

 
console.log(creatureObject);

+0

감사합니다! '.reduce()'에서 벽에 부딪쳤다는 것을 알았 기 때문에 더 효율적으로 실행할 수있는 확실한 방법은 없습니다. 키와 값을 한 번만 지정하기 때문에 훨씬 효율적입니다. – DR01D

+1

예, 특정 목적을 위해 사용 된 특정 개수의 항목이있는 경우 일반적으로 루핑을 피할 수 있습니다. '.reduce()'는 당신이 완전히 다른 것으로 변환 될 수있는 배열을 가지고있을 때 그 멤버의 수가 불확정 할 때 가장 유용하다. –