2016-07-31 4 views
-3

각도 또는 밑줄이없는 노드에서 작업 중이며 효율적인 일반 자바 스크립트 응답 (아마도 루프 방지)을 찾고 있습니다. 내가 JSON의 다음과 같은 배열 객체있다 : 그것은 결국 다음과 같습니다 있도록Javascript 배열의 모든 객체에 동일한 속성을 추가합니다.

username:"clientname" 

:

object = [ 
    {account:2423, user:1564, username:"clientname"}, 
    {account:1235, user:1564, username:"clientname"} 
] 

object = [ 
    {account:2423, user:1564}, 
    {account:1235, user:1564} 
] 

내가 개체 내에서 각 배열에 다음을 추가 할

이 질문은 루프 회피를 요청합니다.

+1

'object.forEach ((o) => {o.username = 'clientname';})'입니다. – Marty

+0

무엇이 문제입니까? 여기에는 Array를 반복하고 속성을 할당하는 두 가지 작업이 포함됩니다. 그 중 하나를 수행하는 방법을 모르는 경우 질문을하기 전에 초보자 용 자료를 읽어야합니다. 그리고 왜 당신은 루프를 피고 싶습니까? 고마워, 마티 –

+0

. Squint, 저는 일반적으로 R로 코딩하고 있고, 그 언어로 비효율적 인 루프를 피하는 법을 배웠습니다. javascript를 처음 사용하고 새로운 길을 찾고 있습니다. – JasonA

답변

0

Array.map 메서드를 사용하면 결과를 얻을 수 있습니다. 여기 코드가

var object = [ 
    {account:2423, user:1564}, 
    {account:1235, user:1564} 
]; 

object.map(function(entry) { 
    entry.username = "clientname"; 
    return entry; 
}); 
+0

Bikas, array.map이 forEach 또는 for 루프보다 다소 효율적이라고 말씀 하시겠습니까? – JasonA

+0

이것은 내가 할 수있는 것보다 더 잘 설명합니다. https://ryanpcmcquen.org/javascript/2015/10/25/map-vs-foreach-vs-for.html 기본적으로지도는 모두 가장 빠른 것입니다 – Bikas

+0

좋은 고맙습니다. Bikas. 너의 답을 정답으로 바꿔라. – JasonA

3

Array#forEach을 사용하여 요소를 반복하고 username 속성을 설정합니다.

var object = [{ 
 
    account: 2423, 
 
    user: 1564 
 
}, { 
 
    account: 1235, 
 
    user: 1564 
 
}]; 
 

 
object.forEach(function(v) { 
 
    v.username = 'clientname'; 
 
}) 
 

 
console.log(object);


비록 당신이 간단한 for loop 사용할 수 있습니다. 참고로


var object = [{ 
 
    account: 2423, 
 
    user: 1564 
 
}, { 
 
    account: 1235, 
 
    user: 1564 
 
}]; 
 

 
for (var i = 0; i < object.length; i++) { 
 
    object[i].username = 'clientname'; 
 
} 
 

 
console.log(object);

:
루프없이 그것은 더 복잡하고 비효율적 일 수있다. 제한된 수의 요소가있는 경우에는 @squint 제안 된 재귀를 사용할 수 있지만 인덱스를 사용하여 업데이트 할 수는 있지만 단순 루프의 작업이므로 여기서는 모든 요소가 필요하다고 생각하지 않습니다.

+1

고마워요 Pranav, 두 루프 모두 작동합니다 – JasonA

관련 문제