Konversi string dengan koma ke array

365

Bagaimana saya bisa mengubah string ke array JavaScript?

Lihatlah kodenya:

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

Dalam hal ini, alertakan muncul a 0,1. Ketika itu akan menjadi array, itu akan muncul 0, dan ketika alert(array[1]);dipanggil, itu akan muncul 1.

Apakah ada peluang untuk mengubah string seperti itu menjadi array JavaScript?

Scott
sumber
Bergantung mengapa Anda menginginkan ini, string dan array sudah sangat mirip (yaitu string[0] === '0'dalam pertanyaan Anda), dalam kebanyakan kasus Anda dapat memperlakukan string sebagai array karakter dan menggunakan metode array di dalamnya.
Paul S.
@ PaulS .: Itu akan gagal di IE8 dan lebih rendah.
I Hate Lazy
kemungkinan duplikat dari string javascript yang dipisah koma menjadi array
Baby
Praktik terbaik untuk mendukung semua jenis string. Lihat di sini stackoverflow.com/a/32657055/2632619
Andi AR

Jawaban:

667

Untuk anggota array sederhana seperti itu, Anda dapat menggunakan JSON.parse.

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

Ini memberi Anda Array angka.

[0, 1]

Jika Anda menggunakan .split(), Anda akan berakhir dengan Array string.

["0", "1"]

Perlu diketahui bahwa JSON.parseakan membatasi Anda untuk tipe data yang didukung. Jika Anda membutuhkan nilai suka undefinedatau fungsi, Anda harus menggunakan eval(), atau parser JavaScript.


Jika Anda ingin menggunakan .split(), tetapi Anda juga menginginkan Array of Numbers, Anda dapat menggunakan Array.prototype.map, meskipun Anda harus menggunakannya untuk IE8 dan lebih rendah atau hanya menulis loop tradisional.

var array = string.split(",").map(Number);
Saya Benci Malas
sumber
4
Perlu diketahui juga bahwa JSON.parse();tidak tersedia di IE6, IE7. Saya pikir dalam hal String.split(',');ini lebih mudah.
scunliffe
@ scunliffe: Benar, shim akan dibutuhkan, atau orang bisa mengambil pendekatan jQuery untuk shim itu var array = (new Function("return [" + string + "];"))(). Penggunaan .split()tidak apa-apa jika Angka tidak diperlukan, jika tidak, Anda harus memetakan hasilnya.
I Hate Lazy
10
@Downvoter: Cobalah untuk menggambarkan apa yang salah dengan jawabannya sehingga saya dapat menunjukkan bagaimana Anda salah.
I Hate Lazy
@ Aku Benci Malas Ini tidak mendukung objek string. Lihat di sini stackoverflow.com/a/32657055/2632619
Andi AR
@ FarzadYZ Berhati-hatilah dengan itu (menggunakan eval). Jika array berisi nilai-nilai dari input sisi klien ini akan tidak aman.
Layu
119

Membaginya pada ,karakter;

var string = "0,1";
var array = string.split(",");
alert(array[0]);
Alex K.
sumber
86

Ini mudah dicapai dalam ES6 ;

Anda dapat mengonversi string menjadi Array dengan Array.from ('string') ;

Array.from("01")

akan menghibur.log

['0', '1']

Yang persis apa yang Anda cari.

Ray Kim
sumber
1
Ini luar biasa. Saya memindahkan kode saya dari JSON.parseke yang Array.fromsaya gunakan ES6. Terima kasihRay Kim
Eshwar Prasad Yaddanapudi
console.log (typeof Data); // string ========== var myArray = Array.from (Data); ============ console.log (typeof myArray); // Objek tidak mendukung properti atau metode 'from' ========== Mengapa Apakah itu?
Janatbek Sharsheyev
1
Tetapi Array.from("0, 1, 233")akan kembali ["0", ",", " ", "1", ",", " ", "2", "3", "3"], bagaimana jika saya mau [0, 1, 233] ?
Tina Chen
17
Ini mengonversi setiap karakter tunggal sebagai elemen array. Tapi kita hanya perlu string yang dipisahkan koma untuk menjadi elemen array. Jadi bukan solusi yang valid.
Edison D'souza
1
Metode ini hanya dapat diandalkan ketika argumen adalah Setstring.
Josh Habdas
57

Jika string sudah dalam format daftar, Anda dapat menggunakan JSON.parse:

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

Konversi semua jenis string

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/

Menghasilkan konsol

masukkan deskripsi gambar di sini

Beberapa latihan tidak mendukung string objek

- 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"}"]
Andi AR
sumber
Fungsi hebat Saya juga menggunakannya tetapi sayangnya TIDAK berfungsi untuk string atau simbol: seperti misalnya "0, s" ada ide bagaimana cara memperbaikinya?
sqp_125
1
@ sqp_125 coba 0, 's'?
Unreality
19

Untuk anggota array sederhana seperti itu, Anda dapat menggunakan JSON.parse.

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

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

Ini memberi Anda Array angka.

sekarang nilai variabel Anda seperti array.length = 1

Nilai output

array[0].ComplianceTaskID
array[0].RequirementTypeID
array[0].MissedRequirement
array[0].TimeOverdueInMinutes
Raghav Chaubey
sumber
16

Pilihan lain menggunakan ES6 adalah menggunakan sintaks Spread .

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

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

Abhinav Galodha
sumber
2
Luar biasa! Bersama dengan Array.dari jawaban mereka harus menjadi satu-satunya jawaban untuk solusi ES6.
Artyom Pranovich
10

gunakan fungsi peta bawaan dengan fungsi anonim, seperti:

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

[sunting] Inilah cara Anda menggunakannya

var string = "0,1";
var array = string.split(',').map(function(n) {
    return Number(n);
});
alert( array[0] );
Dan Mantyla
sumber
1
Ini adalah jawaban yang paling umum berlaku. JSON tidak dapat digunakan untuk pembatas yang berubah-ubah (misalnya tab, spasi, dll)
javadba
Ini tidak akan berfungsi ketika nilai array Anda adalah nilai string yang mungkin memiliki koma di dalamnya. Sebagai contoh: "123, 'a string with a , comma', 456". Anda bisa menggunakan regex yang lebih kompleks untuk menangani kasus-kasus seperti itu dengan benar (misalnya sesuatu yang disarankan di sini )
Wilt
@ Layu baik tidak itu tidak akan, tapi ya Anda bisa menggunakan regex untuk memperbaikinya
Dan Mantyla
1
Saya tidak bermaksud mengkritik jawaban Anda, tetapi saya menulis ini karena saya menggunakan solusi Anda dan mengalami sendiri masalah ini. Berpikir untuk meninggalkan komentar untuk orang lain mungkin mengalami masalah serupa.
Layu
3

Lebih banyak contoh "Cobalah sendiri" di bawah ini.

Definisi dan Penggunaan Metode split () digunakan untuk membagi string menjadi array substring, dan mengembalikan array baru.

Kiat: Jika string kosong ("") digunakan sebagai pemisah, string dipisah antara setiap karakter.

Catatan: Metode split () tidak mengubah string asli.

var res = str.split(",");
HAROONMIND
sumber
3

Anda dapat menggunakan javascript Spread Syntax untuk mengonversi string ke array. Dalam solusi di bawah ini, saya menghapus koma kemudian mengonversi string ke array.

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

Bagaimana Mengonversi String Dipisahkan Koma menjadi Array dalam 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"]

Untuk Lebih Banyak Contoh konversi string ke array di javascript menggunakan cara-cara di bawah ini:

  1. Split () - Tanpa Pemisah:
  2. Split () - Pemisah String Kosong:
  3. Split () - Pemisah di Awal / Akhir:
  4. Separator Ekspresi Reguler:
  5. Menangkap kurung:
  6. Split () dengan Limit Argument

    lihat tautan ini ==> https://www.tutsmake.com/javascript-convert-string-to-array-javascript/

Pengembang
sumber
1

Saya menghapus karakter '[', ']' dan melakukan pemisahan dengan ','

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

Split (",") dapat mengonversi Strings dengan koma menjadi array String, berikut ini cuplikan kode saya.

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

["Aplikasi Hibrid", "Celah Telepon", "Apache Cordova", "HTML5", "JavaScript", "BootStrap", "JQuery", "CSS3", "Android Wear API"]

Hitesh Sahu
sumber
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)

// => mendeklarasikan ekspresi reguler

[a-zA-Z0-9] => cocok dengan semua az, AZ, 0-9

(): => kelompokkan semua elemen yang cocok

$ 1 => string pengganti mengacu pada grup pertandingan pertama di regex.

g => bendera global

KARTHIKEYAN.A
sumber
0

Contoh menggunakan Array.filter:

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

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

Mengapa Anda tidak mengganti ,koma dan split('')string seperti ini yang akan menghasilkan ['0', '1'], selanjutnya, Anda bisa membungkus hasilnya menjadi parseInt()untuk mengubah elemen menjadi tipe integer.

it('convert string to array', function () {
  expect('0,1'.replace(',', '').split('')).toEqual(['0','1'])
});
Solusi Sederhana
sumber