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?


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


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);

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


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.


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);

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"}"]

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


16

Pilihan lain menggunakan ES6 adalah menggunakan sintaks Spread .

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

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


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] );

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(",");

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])

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/


1

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

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

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"]


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


0

Contoh menggunakan Array.filter:

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

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

-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'])
});
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.