2016-07-03 3 views
1

나는 물체를JavaScript의 함수에서 여러 키와 값을 객체에 추가하는 방법은 무엇입니까?

var foo = { 
    "prop1" : "value2", 
    "prop2" : "value3", 
    "prop3" : "value4" 
}; 

이와 나는 한 번에 입력 다중 키와 값 쌍을 수 있도록 해주는 기능을 가지고하는 방법을 싶어요. 이 권리는

function propAndValAdder(){ 
    for (var i = 0; i < arguments.length; i++) { 
     foo[arguments[i]] = [arguments[i + 1]]; 
    } 
} 

인가 :

는 지금은이 있나요?

+1

['Object.defineProperties()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties) –

+0

'foo [arguments [i]] = [ arguments [++ i]]; ' –

+0

foo [arguments [i]] = arguments [++ i]; ([]의 한 세트를 제거하십시오) –

답변

1

) 그리고 할당 라인에있는 값 주변의 []를 없앱니다. (이것은 우리가 원하지 않는 값으로 만들고 있습니다).

수정 코드 :

var foo = { 
    "prop1" : "value2", 
    "prop2" : "value3", 
    "prop3" : "value4" 
}; 

function propAndValAdder(){ 
    for (var i = 0; i < arguments.length; i+=2) { 
     foo[arguments[i]] = arguments[i + 1]; 
    } 
} 

propAndValAdder("prop4","value5","prop5","value6"); 
console.log(foo); 

// 객체 {prop1 : "값 2", prop2 : "VALUE3", prop3 "VALUE4", prop4 "VALUE4", prop5 : "value6은"}

+0

Jason에게 감사드립니다. –

+0

기꺼이 받아 들여 주셔서 감사합니다. –

0

매개 변수에 정보를 전달하고 루프를 수정해야합니다.

수정 버전 : 그냥 건너 뛸 수 있고, 다른 속성으로 값을 추가하지 마십시오 'I'(수 있도록 2를 추가 할 수있는 루프를 변경해야합니다 : 당신은 거의 잘 가지고

/** 
* Add properties and values to the object 
* @param {array} arguments An array where even are keys and odd are the values 
* @param {object} obj  [null] The object to add properties 
* @return {obj}   Return the object but not nessary since it's an object(references) 
*/ 
function propAndValAdder(arguments,obj) { 
    if (!obj) obj = {}; 
    if (arguments.join) //We valid this is an array 
     for (var i = 0; i < arguments.length; i += 2) 
     obj[arguments[i]] = arguments[i + 1]; 
    return obj; 
} 
+0

저는 개념적으로 서명을 뒤집을 것이라고 생각합니다. 아마도 foo (obj/*, args * /)와 비슷한 함수를 추가 인수의 배열을 함수 var args = Array.from (arguments) .slice (1) – JonSG

+0

과 같이 캡처하면됩니다. ] [around [arguments [i + 1]]; 또는 하나의 요소로 된 배열을 할당하게됩니다. –

관련 문제