Saya telah dipisahkan koma string yang aku ingin mengkonversi ke dalam array, sehingga saya dapat loop melalui itu.
Apakah ada sesuatu yang built-in untuk melakukan hal ini?
Misalnya saya memiliki string ini
var str = "January,February,March,April,May,June,July,August,September,October,November,December";
sekarang saya ingin membagi ini dengan koma, dan kemudian menyimpannya dalam array.
var array = string.split(',');
MDN reference, sebagian besar bermanfaat untuk kemungkinan yang tak terduga perilaku batasan
parameter. (Petunjuk: "a,b,c".split(",", 2)
keluar ["a", "b"]
, bukan ["" ", b,c"]
.)
Hati-hati jika anda bertujuan bilangan bulat, seperti 1,2,3,4,5. Jika anda berniat untuk menggunakan elemen array anda sebagai bilangan bulat dan bukan sebagai string setelah membelah string, pertimbangkan untuk mengubah mereka menjadi seperti itu.
var str = "1,2,3,4,5,6";
var temp = new Array();
// this will return an array with strings "1", "2", etc.
temp = str.split(",");
menambahkan sebuah lingkaran seperti ini
for (a in temp ) {
temp[a] = parseInt(temp[a], 10); // Explicitly include base as per Álvaro's comment
}
akan mengembalikan array yang berisi bilangan bulat, dan bukan string.
Hmm split berbahaya imho sebagai string dapat selalu mengandung koma, perhatikan berikut ini:
var myArr = "a,b,c,d,e,f,g,','";
result = myArr.split(',');
Jadi bagaimana anda akan interperate itu? dan apa yang anda INGIN hasil yang sama? sebuah array dengan:
['a', 'b', 'c', 'd', 'e', 'f', 'g', '\'', '\''] or
['a', 'b', 'c', 'd', 'e', 'f', 'g', ',']
bahkan jika anda melarikan diri anda koma'd memiliki masalah.
Cepat memainkan ini bersama-sama:
(function($) {
$.extend({
splitAttrString: function(theStr) {
var attrs = [];
var RefString = function(s) {
this.value = s;
};
RefString.prototype.toString = function() {
return this.value;
};
RefString.prototype.charAt = String.prototype.charAt;
var data = new RefString(theStr);
var getBlock = function(endChr, restString) {
var block = '';
var currChr = '';
while ((currChr != endChr) && (restString.value !== '')) {
if (/'|"/.test(currChr)) {
block = $.trim(block) + getBlock(currChr, restString);
}
else if (/\{/.test(currChr)) {
block = $.trim(block) + getBlock('}', restString);
}
else if (/\[/.test(currChr)) {
block = $.trim(block) + getBlock(']', restString);
}
else {
block += currChr;
}
currChr = restString.charAt(0);
restString.value = restString.value.slice(1);
}
return $.trim(block);
};
do {
var attr = getBlock(',', data);
attrs.push(attr);
}
while (data.value !== '');
return attrs;
}
});
})(jQuery);
Merasa bebas untuk menggunakan / edit :)
Perhatikan yang berikut ini:
var a = "";
var x = new Array();
x = a.split(",");
alert(x.length);
akan siaga 1
Lulus Dipisahkan koma string ke dalam fungsi ini dan akan kembali menginap, dan jika tidak dipisahkan koma string ditemukan maka akan menghasilkan null.
function SplitTheString(CommaSepStr) {
var ResultArray = null;
if (CommaSepStr!= null) {
var SplitChars = ',';
if (CommaSepStr.indexOf(SplitChars) >= 0) {
ResultArray = CommaSepStr.split(SplitChars);
}
}
return ResultArray ;
}
var array = (new Function("return [" + str+ "];")());
yang menerima string dan objectstrings
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
Aku tahu pertanyaan ini telah dijawab untuk cukup lama, tapi saya pikir bahwa kontribusi saya akan bermanfaat untuk orang lain meneliti topik ini...
Berikut ini adalah fungsi yang akan mengkonversi string ke array, bahkan jika hanya ada satu item dalam daftar (tidak ada pemisah karakter):
function listToAray(fullString, separator) {
var fullArray = [];
if (fullString !== undefined) {
if (fullString.indexOf(separator) == -1) {
fullAray.push(fullString);
} else {
fullArray = fullString.split(separator);
}
}
return fullArray;
}
Menggunakannya seperti ini:
var myString = 'alpha,bravo,charlie,delta';
var myArray = listToArray(myString, ',');
myArray[2]; // charlie
var yourString = 'echo';
var yourArray = listToArray(yourString, ',');
yourArray[0]; // echo
Saya membuat fungsi ini karena split
melempar kesalahan jika tidak ada pemisah karakter dalam string (hanya satu item)
Aku punya masalah yang sama, tetapi lebih kompleks seperti yang saya butuhkan untuk mengubah csv ke dalam sebuah array dari array (masing-masing baris adalah salah satu elemen array yang dalam memiliki sebuah array dari item yang dipisah dengan koma).
Solusi yang paling mudah (dan lebih aman saya yakin) adalah menggunakan PapaParse (http://papaparse.com/) yang memiliki "no-header" opsi yang mengubah csv ke dalam sebuah array dari array, plus, maka secara otomatis terdeteksi "," saya sebagai pembatas.
Plus, itu terdaftar di bower, jadi saya hanya harus:
bower install papa-parse --save
dan kemudian menggunakannya dalam kode saya sebagai berikut:
var arrayOfArrays = Papa.parse(csvStringWithEnters), {header:false}).data;
Aku benar-benar menyukainya.
let str = "January,February,March,April,May,June,July,August,September,October,November,December"
let arr = str.split(',');
hal ini akan menghasilkan:
["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
dan jika anda ingin mengkonversi berikut:
["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
ini:
"January,February,March,April,May,June,July,August,September,October,November,December";
gunakan:
str = arr.join(',')
solusi yang baik untuk itu
let obj = ['A','B','C']
obj.map((c) => { return c. }).join(', ')