2013-08-25 2 views
12

'value'와 'label'과 같은 몇 가지 속성을 가진 객체 배열이 있습니다.하나의 속성을 사용하여 객체 배열을 결합하십시오.

array.join(' ') 물론 나는 "[object] [object]"를 제공하지만 대신 모든 개체의 'value'속성의 문자열을 공백으로 구분해야합니다.

이렇게하는 가장 빠른 방법은 무엇이며 for 루프를 작성하지 않고 이것이 가능합니까?

jQuery.map() 사용해보십시오
+1

개체가 비슷합니까? 즉, 단일 생성자 함수로 만들 수 있습니까? 그렇다면'.toString()'메소드를'Constructor.prototype' 객체에 추가하여 문자열로 변환 할 때의 모습을 정의 할 수 있습니다. 그럼'array.join ("")' –

+0

... [데모보기] (http://jsfiddle.net/2fYvN/)를 할 수 있습니다. 이것은 배열을 새로운 값으로 수동으로 매핑하여 결합하는 것보다 좋을 것입니다. –

답변

24

-Array.map()JSON.stringify() 들어 있기 때문에 IE < 9 지원

의 사용하지 않는 - 오래된 브라우저 지원을 위해

$.map(array, function(obj){return JSON.stringify(obj)}).join(' ') 

업데이트를 json2을 사용 : 값 속성을 얻으려면

var string = $.map(array, function(obj){ 
    return obj.value 
}).join(' '); 

데모 : Fiddle

,
+0

'return' 문이 누락 된 것 같습니다. – undefined

+0

@undefined thanks :), 수정되었습니다 ... –

+1

그것은 나쁘게 설명했습니다 것 같습니다. 내 질문을 편집, 배열에있는 개체의 모든 '값'속성의 공백으로 구분 된 문자열입니다. –

3

사용 Array.map :

let data = [ 
    { 
    "animal": "cat", 
    "name": "Fluffy" 
    }, 
    { 
    "animal": "dog", 
    "name": "Bowser" 
    }, 
    { 
    "animal": "cat", 
    "name": "Felix" 
    } 
] 

지금 .map를 사용하여 이름을 추출 :

let names = data.map(item => item.name) 


let nameString = names.join(' ') 

그리고 지금 nameStringFluffy Bowser Felix이 포함되어 있습니다.

관련 문제