쉼표로 문자열을 배열로 변환


365

문자열을 JavaScript 배열로 변환하려면 어떻게해야합니까?

코드를보십시오 :

var string = "0,1";
var array = [string];
alert(array[0]);

이 경우 alert팝업이 나타납니다 0,1. 배열 일 때는 a를 팝업 0하고 alert(array[1]);호출하면를 팝업해야합니다 1.

그러한 문자열을 JavaScript 배열로 변환 할 기회가 있습니까?


원하는 이유에 따라 문자열과 배열은 이미 매우 유사합니다 (즉 string[0] === '0', 질문에서). 대부분의 경우 문자열을 문자 배열로 취급하고 배열 메서드를 사용할 수 있습니다.
Paul S.

@PaulS .: IE8 이하에서는 실패 합니다.
나는 게으른 증오


모든 유형의 문자열을 지원하는 모범 사례. 여기를 참조하십시오 stackoverflow.com/a/32657055/2632619
Andi AR

답변:


667

그런 간단한 배열 멤버의 경우을 사용할 수 있습니다 JSON.parse.

var array = JSON.parse("[" + string + "]");

이것은 당신에게 숫자의 배열을 제공합니다.

[0, 1]

를 사용 .split()하면 문자열 배열이 생깁니다.

["0", "1"]

그냥 알고 있어야 JSON.parse지원되는 데이터 유형을 제한합니다. like undefined또는 함수 와 같은 값이 필요한 경우 eval(), 또는 JavaScript 파서 를 사용해야 합니다.


을 사용 .split()하고 싶지만 Array of Numbers 를 원한다면을 사용할 수 Array.prototype.map있지만 IE8에서는 shim을 낮추거나 전통적인 루프를 작성해야합니다.

var array = string.split(",").map(Number);

4
또한 JSON.parse();IE6, IE7에서는 사용할 수 없습니다. 이 경우에는 String.split(',');더 쉽다고 생각 합니다.
scunliffe

@ scunliffe : 사실, shim이 필요하거나 jQuery 접근법을 사용하여 shim 할 수 var array = (new Function("return [" + string + "];"))()있습니다. 사용하면 .split()번호가 필요하지 않은 경우, 그렇지 않으면 결과를 매핑 할 필요 했어 괜찮아.
나는 게으른 증오

10
@Downvoter : 당신이 어떻게 잘못되었는지 보여줄 수 있도록 대답에 무엇이 잘못되었는지 설명하십시오.
나는 게으른 증오

@I Lazy 증오 이것은 객체 문자열을 지원하지 않습니다. 여기를 참조하십시오 stackoverflow.com/a/32657055/2632619
Andi AR

@FarzadYZ 조심하십시오 (을 사용하여 eval). 배열에 클라이언트 측 입력의 값이 포함되어 있으면 안전하지 않습니다.
Wilt


86

이것은 ES6 에서 쉽게 달성됩니다 .

Array.from ( 'string') 사용 하여 문자열을 배열로 변환 할 수 있습니다 .

Array.from("01")

will console.log

['0', '1']

정확히 당신이 찾고있는 것입니다.


1
대단해. 나는에서 내 코드를 이동 JSON.parse하는 Array.from오전으로 사용 ES6. 감사합니다Ray Kim
Eshwar Prasad Yaddanapudi

console.log (데이터 유형); // string ========== var myArray = Array.from (Data); ============ console.log (typeof myArray); // 객체가 속성 또는 메소드 'from'을 지원하지 않습니다. ========== 왜 그렇습니까?
Janatbek Sharsheyev

1
하지만 Array.from("0, 1, 233")돌아 ["0", ",", " ", "1", ",", " ", "2", "3", "3"]오면 내가 원한다면 어쩌지 [0, 1, 233] ?
Tina Chen

17
이것은 모든 단일 문자를 배열 요소로 변환합니다. 그러나 배열 요소가 되려면 쉼표로 구분 된 문자열 만 있으면됩니다. 따라서 올바른 해결책이 아닙니다.
Edison D' souza

1
이 메소드는 인수가 Set문자열 인 경우에만 신뢰할 수 있습니다.
Josh Habdas

57

문자열이 이미 목록 형식 인 경우 JSON.parse를 사용할 수 있습니다.

var a = "['a', 'b', 'c']";
a = a.replace(/'/g, '"');
a = JSON.parse(a);

24

모든 유형의 문자열 변환

var array = (new Function("return [" + str+ "];")());



var string = "0,1";

var objectstring = '{Name:"Tshirt", CatGroupName:"Clothes", Gender:"male-female"}, {Name:"Dress", CatGroupName:"Clothes", Gender:"female"}, {Name:"Belt", CatGroupName:"Leather", Gender:"child"}';

var stringArray = (new Function("return [" + string+ "];")());

var objectStringArray = (new Function("return [" + objectstring+ "];")());

JSFiddle https://jsfiddle.net/7ne9L4Lj/1/

콘솔 결과

여기에 이미지 설명을 입력하십시오

일부 연습은 객체 문자열을 지원하지 않습니다

- JSON.parse("[" + string + "]"); // throw error

 - string.split(",") 
// unexpected result 
   ["{Name:"Tshirt"", " CatGroupName:"Clothes"", " Gender:"male-female"}", "      {Name:"Dress"", " CatGroupName:"Clothes"", " Gender:"female"}", " {Name:"Belt"",    " CatGroupName:"Leather"", " Gender:"child"}"]

훌륭한 기능 나는 그것을 사용하지만 불행히도 문자열이나 기호에는 작동하지 않습니다.
sqp_125

1
@ sqp_125 try 0, 's'?
Unreality

19

그런 간단한 배열 멤버의 경우 JSON.parse를 사용할 수 있습니다.

var listValues = "[{\"ComplianceTaskID\":75305,\"RequirementTypeID\":4,\"MissedRequirement\":\"Initial Photo Upload NRP\",\"TimeOverdueInMinutes\":null}]";

var array = JSON.parse("[" + listValues + "]");

이것은 당신에게 숫자의 배열을 제공합니다.

이제 변수 값은 array.length = 1과 같습니다.

가치 출력

array[0].ComplianceTaskID
array[0].RequirementTypeID
array[0].MissedRequirement
array[0].TimeOverdueInMinutes


16

ES6를 사용하는 또 다른 옵션은 스프레드 구문을 사용하는 것입니다.

var convertedArray = [..."01234"];

var stringToConvert = "012";
var convertedArray  = [...stringToConvert];
console.log(convertedArray);


2
대박! Array.from 답변과 함께 ES6 솔루션에 대한 유일한 답변이어야합니다.
Artyom Pranovich

10

다음과 같이 내장 함수를 익명 함수와 함께 사용하십시오.

string.split(',').map(function(n) {return Number(n);});

[편집] 사용 방법은 다음과 같습니다.

var string = "0,1";
var array = string.split(',').map(function(n) {
    return Number(n);
});
alert( array[0] );

1
가장 일반적으로 적용되는 답변입니다. 임의의 구분 기호 (예 : 탭, 공백 등)에는 JSON을 사용할 수 없습니다.
javadba

배열 값이 가능한 쉼표가있는 문자열 값인 경우에는 작동하지 않습니다. 예를 들면 다음과 같습니다 "123, 'a string with a , comma', 456".. 더 복잡한 정규 표현식을 사용하여 이러한 경우를 올바르게 처리 할 수 ​​있습니다 (예 : 여기에 제안 된 것과 같은 ).
윌트

@Wilt 잘 아니,하지만 그래, 당신은 그것을 해결하기 위해 정규식을 사용할 수 있습니다
Dan Mantyla

1
나는 당신의 대답을 비판 할 의도는 없었지만, 나는 당신의 해결책을 사용 하고이 문제를 직접 만났기 때문에 이것을 썼습니다. 다른 사람들이 비슷한 문제를 겪을 가능성이 있다고 생각했습니다.
Wilt February

3

아래의 "자신을 사용해보십시오"예제 더보기

정의 및 사용법 split () 메서드는 문자열을 하위 문자열 배열로 분할하는 데 사용되며 새 배열을 반환합니다.

팁 : 빈 문자열 ( "")을 구분 기호로 사용하면 문자열이 각 문자로 분할됩니다.

참고 : split () 메서드는 원래 문자열을 변경하지 않습니다.

var res = str.split(",");

3

javascript Spread Syntax 를 사용 하여 문자열을 배열로 변환 할 수 있습니다 . 아래 솔루션에서 쉼표를 제거한 다음 문자열을 배열로 변환합니다.

var string = "0,1"
var array = [...string.replace(',', '')]
console.log(array[0])

2

JavaScript에서 쉼표로 구분 된 문자열을 배열로 변환하는 방법은 무엇입니까?

var string = 'hello, world, test, test2, rummy, words';
var arr = string.split(', '); // split string on comma space
console.log( arr );

//Output
["hello", "world", "test", "test2", "rummy", "words"]

아래의 방법을 사용하여 자바 스크립트에서 문자열을 배열로 변환하는 예 :

  1. Split () – 구분자 없음 :
  2. Split () – 빈 문자열 구분 기호 :
  3. Split () – 시작 / 종료시 구분 기호 :
  4. 정규식 구분 기호 :
  5. 괄호 캡처 :
  6. 한계 인수가있는 Split ()

    이 링크를 확인하십시오 ==> https://www.tutsmake.com/javascript-convert-string-to-array-javascript/


1

문자 '[', ']'를 제거하고 ','로 분할

let array = stringObject.replace('[','').replace(']','').split(",").map(String);

0

분할 ( ",")은 쉼표가있는 문자열을 문자열 배열로 변환 할 수 있습니다. 여기 내 코드 스 니펫이 있습니다.

    var input ='Hybrid App, Phone-Gap, Apache Cordova, HTML5, JavaScript, BootStrap, JQuery, CSS3, Android Wear API'
    var output = input.split(",");
    console.log(output);

[ "하이브리드 앱", "전화 갭", "Apache Cordova", "HTML5", "JavaScript", "BootStrap", "JQuery", "CSS3", "Android Wear API"]


0

var i = "[{a:1,b:2}]",
    j = i.replace(/([a-zA-Z0-9]+?):/g, '"$1":').replace(/'/g,'"'),
    k = JSON.parse(j);

console.log(k)

// => 정규 표현식 선언

[a-zA-Z0-9] => 모든 az, AZ, 0-9와 일치

() : => 일치하는 모든 요소를 ​​그룹화

$ 1 => 교체 문자열은 정규식의 첫 번째 일치 그룹을 나타냅니다.

g => 전역 플래그


0

사용 예 Array.filter:

var str = 'a,b,hi,ma,n,yu';

var strArr = Array.prototype.filter.call(str, eachChar => eachChar !== ',');

-1

,쉼표와 split('')이와 같은 문자열을 바꾸지 않는 이유는 무엇입니까? ['0', '1']또한 결과를 래핑하여 parseInt()요소를 정수 유형으로 변환 할 수 있습니다 .

it('convert string to array', function () {
  expect('0,1'.replace(',', '').split('')).toEqual(['0','1'])
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.