자바 스크립트 배열을 문자열로 변환


115

"값"목록을 반복하여 문자열로 변환하려고합니다. 다음은 코드입니다.

var blkstr = $.each(value, function(idx2,val2) {                    
     var str = idx2 + ":" + val2;
     alert(str);
     return str;
}).get().join(", ");    

alert () 함수는 잘 작동하고 적절한 값을 표시합니다. 그러나 어떻게 든 jquery의 .get () 함수는 올바른 종류의 객체를 얻지 못하고 실패합니다. 내가 뭘 잘못하고 있죠?


5
"가치"는 무엇입니까? 배열입니까? 그렇다면 var str = value.join ( ',') 잘 작동 할 수 있습니다.
StefanS 2011 년

예. .get () 부분을 주석 처리하면 "id1 : val1", "id2 : val2"등을 표시하는 경고 상자가 나타납니다.
네오

"... 올바른 종류 의 물건 얻기"를 의미 합니까? (. 질문 요청 클릭하기 전에 빠른 교정 문은 일반적으로 좋은 아이디어입니다) (I 오히려 더 강하게 넣어했다 내 이전 주석 제거 -이 질문이 많은 . 같은 많은보다 적은 오타 등)
TJ 크라우

답변:


131

경우 value연관 배열이며, 이러한 코드는 잘 작동합니다 :

var value = { "aaa": "111", "bbb": "222", "ccc": "333" };
var blkstr = [];
$.each(value, function(idx2,val2) {                    
  var str = idx2 + ":" + val2;
  blkstr.push(str);
});
console.log(blkstr.join(", "));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

(출력은 개발 콘솔에 나타납니다)

Felix가 언급했듯이, each()더 이상은 배열을 반복하고 있습니다.


118

배열에서 문자열로 변환하는 것은 매우 쉽습니다!

var A = ['Sunday','Monday','Tuesday','Wednesday','Thursday']
array = A + ""

이제 A는 문자열입니다. :)


7
대신 A.toString ()을 제안하여 수행중인 작업을 더 명확하게합니다.
Justin

8
당신이 [1,2,[3]].toString(), 당신은 얻을 것이다 1,2,3, 꽤 쓰레기입니다. 이 대답은 동일한 끊어진 네이티브 문자열 메서드에 동일한 호출을 작성하는 더 나쁜 방법입니다. 42 upvotes ??
Carl Smith

8
당신은 또한 그렇게 배열에 가입 할 수 있습니다['Sunday','Monday','Tuesday','Wednesday','Thursday'].join('');
etoxin 2014

1
Array.join()쉼표로 값을 단순히 연결하는 것이 아니라 사용자가 연결을 수행해야하는 방법을 결정할 수 있기 때문에 확실히 최선의 옵션입니다. 예를 들어 쉼표 + 공백을 사용할 수 있습니다.
Felipe Leão

1
이것은 나에게 완벽합니다. api 호출을 위해 공백없이 쉼표로 구분 된 문자열로 변경되는 배열을 전달하고 있습니다. 다시 한 번 감사드립니다.
Nick D

104

를 사용 .toString()하여 쉼표로 배열을 결합 할 수 있습니다 .

var array = ['a', 'b', 'c'];
array.toString(); // result: a,b,c

또는으로 구분 기호를 설정하십시오 array.join('; '); // result: a; b; c.


3
나는 배열이 문자 그대로 문자열로 번역되기를 바라고 있었고 그 후에 Regex를 사용하여 지방을 제거하도록 강요 받았지만 이것은 Oh So Much Better입니다! 고마워 저스틴.
cranberry

52

이것이 당신이 원하는 것인지 확실하지 않지만

var arr = [A, B, C];
var arrString = arr.join(", ");

결과는 다음과 같습니다.

A, B, C


1
이것은 지금까지 명성 간단한 방법입니다
지미 Obonyo ABOR

1
쉼표를위한 공간이 하나 더 필요했는데 이것이 유일한 쉬운 방법이었습니다.
Talha Talip Açıkgöz

1
가장 간단하고 쉬운 방법. 감사합니다
Raul A.

36

배열을 문자열로 변환하는 네 가지 방법.

문자열로 강제 변환

var arr = ['a', 'b', 'c'] + [];  // "a,b,c"

var arr = ['a', 'b', 'c'] + '';  // "a,b,c"

부름 .toString()

var arr = ['a', 'b', 'c'].toString();  // "a,b,c"

다음을 사용하여 명시 적으로 결합 .join()

var arr = ['a', 'b', 'c'].join();  // "a,b,c" (Defaults to ',' seperator)

var arr = ['a', 'b', 'c'].join(',');  // "a,b,c"

예를 들어 다른 구분 기호를 사용할 수 있습니다. ', '

var arr = ['a', 'b', 'c'].join(', ');  // "a, b, c"

사용 JSON.stringify()

배열 내부의 문자열을 인용하고 중첩 된 배열을 적절하게 처리하므로 더 깔끔합니다.

var arr = JSON.stringify(['a', 'b', 'c']);  // '["a","b","c"]'

17

jQuery.each배열을 반복하고 있으며 반환 값 에는 아무 작업도하지 않습니다 . 당신은 찾고 있습니다 jQuery.map( get()jQuery 객체를 다루지 않기 때문에 불필요 하다고 생각 합니다) :

var blkstr = $.map(value, function(val,index) {                    
     var str = index + ":" + val;
     return str;
}).join(", ");  

데모


하지만이 경우 왜 jQuery를 사용합니까? map요소 당 불필요한 함수 호출 만 도입합니다.

var values = [];

for(var i = 0, l = value.length; i < l; i++) {
    values.push(i + ':' + value[i]);
}

// or if you actually have an object:

for(var id in value) {
    if(value.hasOwnProperty(id)) {
        values.push(id + ':' + value[id]);
    }
}

var blkstr = values.join(', ');

∆ : 요소를 계속 반복할지 여부에 관계없이 반환 값만 사용합니다. "거짓"값을 반환하면 루프가 중지됩니다.


여기에 "정리 된"코드를 붙여 넣었습니다. 실제로 jquery 객체를 다루고 있습니다. 감사합니다.지도가 완벽하게 작동합니다.
Neo

@Neo : jQuery 객체 인 map경우 에만 필요 value합니다. 그런 다음 value.map(...).get(). 그러나 jQuery 객체의 배열 만 있으면 get. 천만에요 :)
Felix Kling 2011 년

9

사용 join()및 구분 기호입니다.

작업 예

var arr = ['a', 'b', 'c', 1, 2, '3'];

// using toString method
var rslt = arr.toString(); 
console.log(rslt);

// using join method. With a separator '-'
rslt = arr.join('-');
console.log(rslt);

// using join method. without a separator 
rslt = arr.join('');
console.log(rslt);


4

이것은 내 함수, 객체 또는 배열을 json으로 변환

function obj2json(_data){
    str = '{ ';
    first = true;
    $.each(_data, function(i, v) { 
        if(first != true)
            str += ",";
        else first = false;
        if ($.type(v)== 'object' )
            str += "'" + i + "':" + obj2arr(v) ;
        else if ($.type(v)== 'array')
            str += "'" + i + "':" + obj2arr(v) ;
        else{
            str +=  "'" + i + "':'" + v + "'";
        }
    });
    return str+= '}';
}

나는 v0.2로 편집합니다 ^. ^

 function obj2json(_data){
    str = (($.type(_data)== 'array')?'[ ': '{ ');
    first = true;
    $.each(_data, function(i, v) { 
        if(first != true)
            str += ",";
        else first = false;
        if ($.type(v)== 'object' )
            str += '"' + i + '":' + obj2json(v) ;
        else if ($.type(v)== 'array')
            str += '"' + i + '":' + obj2json(v) ;
        else{
            if($.type(_data)== 'array')
                str += '"' + v + '"';
            else
                str +=  '"' + i + '":"' + v + '"';
        }
    });
    return str+= (($.type(_data)== 'array')? ' ] ':' } ');;
}

3

나는 배열의 String rappresentation이되기 위해 배열이 필요했습니다.

var a = ['a','b','c'];
//became a "real" array string-like to pass on query params so was easy to do:
JSON.stringify(a); //-->"['a','b','c']"

누군가 그것을 필요로 할 수도 있습니다 :)


2
var arr = new Array();

var blkstr = $.each([1, 2, 3], function(idx2,val2) {                    
    arr.push(idx2 + ":" + val2);
    return arr;
}).join(', ');

console.log(blkstr);

또는

var arr = new Array();

$.each([1, 2, 3], function(idx2,val2) {                    
    arr.push(idx2 + ":" + val2);

});

console.log(arr.join(', '));

2

배열을 URL에 추가 할 수있는 GET 매개 변수 문자열로 변환하는 것은 다음과 같이 수행 할 수 있습니다.

function encodeGet(array){
    return getParams = $.map(array , function(val,index) {                    
        var str = index + "=" + escape(val);
        return str;
   }).join("&");
}

이 함수를 다음과 같이 호출하십시오.

var getStr = encodeGet({
    search:     $('input[name="search"]').val(),
    location:   $('input[name="location"]').val(),
    dod:        $('input[name="dod"]').val(),
    type:       $('input[name="type"]').val()
});
window.location = '/site/search?'+getStr;

사용자를 / site / search로 전달합니까? encodeGet에 제공된 배열에 설명 된 get 매개 변수가있는 페이지.


1
jQuery.param (array)는 encodeGet (array)가하는 일을합니다.
Curtis Yallop 2013 년

1

배열과 목록을 혼동해서는 안됩니다 ... 이것은 목록 : {...}이며 길이가 없거나 다른 배열 속성이 없습니다.

이것은 배열입니다 : [...] 그리고 여기에 제안 된 누군가처럼 배열 함수, 메서드 등을 사용할 수 있습니다. someArray.toString ();

"someObj.toString ();" 목록과 같은 다른 개체 유형에서는 작동하지 않습니다. ;-)



0

다음은 밑줄 기능을 사용하는 예입니다.

var exampleArray = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
var finalArray = _.compact(_.pluck(exampleArray,"name")).join(",");

최종 출력은 "moe, larry, curly"입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.