kzen.dev
  • Întrebări
  • Tag-uri
  • Utilizatori
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
Herb Caudill
Herb Caudill
Question

Modalitate ușoară de a transforma matrice JavaScript în listă separată prin virgulă?

Am un one-dimensional matrice de siruri de caractere în JavaScript care am'd place să se transforme într-o listă separată prin virgulă. Există un mod simplu în grădină JavaScript (jQuery sau) pentru a transforma într-o listă separată prin virgulă? (Știu cum de a repeta prin matrice și de a construi șirul mine prin concatenarea dacă asta's singura cale.)

378 2008-10-14T15:47:17+00:00 17
 sg7
sg7
Întrebarea editată 17 martie 2018 в 6:43
Programare
javascript
jquery
Solution / Answer
 Wayne
Wayne
14 octombrie 2008 в 3:48
2008-10-14T15:48:48+00:00
Mai mult
Sursă
Editează
#8564012

La Array.prototype.join() metoda:

var arr = ["Zero", "One", "Two"];

document.write(arr.join(", "));
Steel Brain
Steel Brain
Răspuns editat 17 martie 2016 в 3:52
747
0
Ates Goral
Ates Goral
14 octombrie 2008 в 6:21
2008-10-14T18:21:34+00:00
Mai mult
Sursă
Editează
#8564014

De fapt, `toString () de implementare a face o asociere cu virgule în mod implicit:

var arr = [ 42, 55 ];
var str1 = arr.toString(); // Gives you "42,55"
var str2 = String(arr); // Ditto

Eu nu't știu dacă acest lucru este mandatat de către JS spec dar acest lucru este ceea ce mai cam tot browsere par să faci.

89
0
Sergey Ilinsky
Sergey Ilinsky
14 octombrie 2008 в 5:45
2008-10-14T17:45:52+00:00
Mai mult
Sursă
Editează
#8564013

Sau (mai eficient):

var so = new Array(3);
arr[0] = "Zero";
arr[1] = "O";
arr[2] = "Doi";

document.scrie(arr); // la fel ca document.scrie(arr.toString()) în acest context

La metoda toString de o matrice atunci când este solicitat se întoarce exact ceea ce ai nevoie - listă separată prin virgulă.

29
0
 skibulk
skibulk
4 martie 2014 в 10:41
2014-03-04T22:41:04+00:00
Mai mult
Sursă
Editează
#8564015

Aici's o implementare care convertește un tablou bidimensional sau o serie de coloane într-un mod corespunzător a scăpat CSV șir. Funcțiile nu se verifica pentru șir valid/numărul de intrare sau de coloană contează (asigura matrice este valabil pentru a începe cu). Celulele pot conține virgule și citate!

Aici's a script-ul pentru decodare CSV siruri de caractere.

Aici's my script pentru codificarea CSV siruri de caractere:

// Example
var csv = new csvWriter();
csv.del = '\t';
csv.enc = "'";

var nullVar;
var testStr = "The comma (,) pipe (|) single quote (') double quote (\") and tab (\t) are commonly used to tabulate data in plain-text formats.";
var testArr = [
    false,
    0,
    nullVar,
    // undefinedVar,
    '',
    {key:'value'},
];

console.log(csv.escapeCol(testStr));
console.log(csv.arrayToRow(testArr));
console.log(csv.arrayToCSV([testArr, testArr, testArr]));

/**
 * Class for creating csv strings
 * Handles multiple data types
 * Objects are cast to Strings
 **/

function csvWriter(del, enc) {
    this.del = del || ','; // CSV Delimiter
    this.enc = enc || '"'; // CSV Enclosure

    // Convert Object to CSV column
    this.escapeCol = function (col) {
        if(isNaN(col)) {
            // is not boolean or numeric
            if (!col) {
                // is null or undefined
                col = '';
            } else {
                // is string or object
                col = String(col);
                if (col.length > 0) {
                    // use regex to test for del, enc, \r or \n
                    // if(new RegExp( '[' + this.del + this.enc + '\r\n]' ).test(col)) {

                    // escape inline enclosure
                    col = col.split( this.enc ).join( this.enc + this.enc );

                    // wrap with enclosure
                    col = this.enc + col + this.enc;
                }
            }
        }
        return col;
    };

    // Convert an Array of columns into an escaped CSV row
    this.arrayToRow = function (arr) {
        var arr2 = arr.slice(0);

        var i, ii = arr2.length;
        for(i = 0; i < ii; i++) {
            arr2[i] = this.escapeCol(arr2[i]);
        }
        return arr2.join(this.del);
    };

    // Convert a two-dimensional Array into an escaped multi-row CSV 
    this.arrayToCSV = function (arr) {
        var arr2 = arr.slice(0);

        var i, ii = arr2.length;
        for(i = 0; i < ii; i++) {
            arr2[i] = this.arrayToRow(arr2[i]);
        }
        return arr2.join("\r\n");
    };
}
 skibulk
skibulk
Răspuns editat 21 august 2016 в 12:24
13
0
 mpen
mpen
10 martie 2014 в 11:44
2014-03-10T23:44:31+00:00
Mai mult
Sursă
Editează
#8564016

Cred că asta ar trebui să faci:

var arr = ['contains,comma', 3.14, 'contains"quote', "more'quotes"]
var item, i;
var line = [];

for (i = 0; i < arr.length; ++i) {
    item = arr[i];
    if (item.indexOf && (item.indexOf(',') !== -1 || item.indexOf('"') !== -1)) {
        item = '"' + item.replace(/"/g, '""') + '"';
    }
    line.push(item);
}

document.getElementById('out').innerHTML = line.join(',');

vioara

Practic tot ce face este de a verifica dacă șirul conține o virgulă sau citat. Dacă o face, atunci se dubleaza toate citatele, și pune citate pe capete. Apoi se alătură fiecare dintre părți cu o virgulă.

10
0
Sagar V
Sagar V
18 iulie 2017 в 8:18
2017-07-18T08:18:19+00:00
Mai mult
Sursă
Editează
#8564025

Există mai multe metode pentru a converti o serie de listă separată prin virgule

1. Folosind matrice#se alăture

De MDN

join() metoda se alătură toate elementele unei matrice (sau o mulțime-ca obiect) într-un șir.

Codul

var arr = ["this","is","a","comma","separated","list"];
arr = arr.join(",");

Fragment

var arr = ["this", "is", "a", "comma", "separated", "list"];
arr = arr.join(",");
console.log(arr);

2. Folosind matrice#toString

Din MDN

toString() metoda returnează un șir care reprezintă specificate matrice și elementele sale.

Codul

var arr = ["this","is","a","comma","separated","list"];
arr = arr.toString();

Fragment

var arr = ["this", "is", "a", "comma", "separated", "list"];
arr = arr.toString();
console.log(arr);

3. Adaugă []+ înainte de matrice sau +[] după o serie

La []+ sau +[] se va transforma într-un șir

Dovada

([]+[] === [].toString())

va ieșire true

console.log([]+[] === [].toString());
var arr = ["this","is","a","comma","separated","list"];
arr = []+arr;

Fragment

var arr = ["this", "is", "a", "comma", "separated", "list"];
arr = []+arr;
console.log(arr);

, De asemenea,

var arr = ["this","is","a","comma","separated","list"];
arr = arr+[];
var arr = ["this", "is", "a", "comma", "separated", "list"];
arr = arr + [];
console.log(arr);
7
0
Avijit Gupta
Avijit Gupta
13 decembrie 2015 в 10:19
2015-12-13T10:19:55+00:00
Mai mult
Sursă
Editează
#8564018

Utilizați built-in Matrice.toString metoda

var arr = ['one', 'two', 'three'];
arr.toString();  // 'one,two,three'

MDN pe Array.toString()

7
0
Andrew Downes
Andrew Downes
25 martie 2017 в 10:19
2017-03-25T10:19:18+00:00
Mai mult
Sursă
Editează
#8564021

Dacă aveți nevoie pentru a utiliza " și " în loc de ", " între ultimele două elemente, puteți face acest lucru:

function arrayToList(array){
  return array
    .join(", ")
    .replace(/, ((?:.(?!, ))+)$/, ' and $1');
}
Andrew Downes
Andrew Downes
Răspuns editat 25 martie 2017 в 10:37
6
0
 knowbody
knowbody
30 iunie 2017 в 10:16
2017-06-30T10:16:34+00:00
Mai mult
Sursă
Editează
#8564023

De obicei găsesc eu nevoie de ceva care, de asemenea, sare de valoare în cazul în care valoarea este nul sau nedefinit, etc.

Deci, aici este solutia care functioneaza pentru mine:

// Example 1
const arr1 = ['apple', null, 'banana', '', undefined, 'pear'];
const commaSeparated1 = arr1.filter(item => item).join(', ');
console.log(commaSeparated1); // 'apple, banana, pear'

// Example 2
const arr2 = [null, 'apple'];
const commaSeparated2 = arr2.filter(item => item).join(', ');
console.log(commaSeparated2); // 'apple'

Cele mai multe dintre soluțiile de aici ar reveni `', mar' dacă matricea mea ar arata ca cel din al doilea exemplu. Ca's de ce am preferat această soluție.

3
0
Dawson B
Dawson B
24 februarie 2016 в 8:40
2016-02-24T08:40:18+00:00
Mai mult
Sursă
Editează
#8564019

Vrei să se încheie cu o "și"?

Pentru această situație, am creat un modul de nmp.

Încerca arrford:


Utilizare

const arrford = require('arrford');

arrford(['run', 'climb', 'jump!']);
//=> 'run, climb, and jump!'

arrford(['run', 'climb', 'jump!'], false);
//=> 'run, climb and jump!'

arrford(['run', 'climb!']);
//=> 'run and climb!'

arrford(['run!']);
//=> 'run!'


Instala

npm install --save arrford


Citeste Mai Mult

https://github.com/dawsonbotsford/arrford


Încercați să-l singur

Tonic link

Dawson B
Dawson B
Răspuns editat 24 martie 2016 в 10:50
1
0
E Roberts
E Roberts
23 iunie 2015 в 8:50
2015-06-23T20:50:48+00:00
Mai mult
Sursă
Editează
#8564017

Luarea inițială cod:

var arr = new Array(3);
arr[0] = "Zero";
arr[1] = "One";
arr[2] = "Two";

Inițial răspunde de utilizarea alăturați-vă funcție este ideală. Un lucru să ia în considerare ar fi cea mai mare utilizare din șir.

Pentru utilizarea în unele end textuale display:

arr.join(",")
=> "Zero,One,Two"

Pentru utilizarea într-un URL pentru a trece mai multe valori într-un (oarecum) Odihnitoare mod:

arr.join("|")
=> "Zero|One|Two"

var url = 'http://www.yoursitehere.com/do/something/to/' + arr.join("|");
=> "http://www.yoursitehere.com/do/something/to/Zero|One|Two"

Desigur, totul depinde de utilizarea finală. Doar ține sursă de date și de utilizare în minte și totul va fi în regulă cu lumea.

1
0
Jaime Montoya
Jaime Montoya
29 august 2018 в 3:50
2018-08-29T15:50:29+00:00
Mai mult
Sursă
Editează
#8564027

Mi-a plăcut soluția la

pentru că se adaugă spații după virgule:

array = ["test","test2","test3"]
array = array.toString();
array = array.replace(/,/g, ", ");
alert(array);

Sau, cum a sugerat de către @StackOverflaw în comentarii:

array.join(', ');
Jaime Montoya
Jaime Montoya
Răspuns editat 29 august 2018 в 4:26
1
0
 Bob
Bob
8 iulie 2017 в 4:32
2017-07-08T16:32:29+00:00
Mai mult
Sursă
Editează
#8564024

Tata Analiza (browser based) se ocupă de virgule în valori și alte cazuri de margine. Folosi Copil Analiza pentru Nod.

De exemplu. (nod)

const csvParser = require('babyparse');
var arr = [1,null,"a,b"] ;
var csv = csvParser.unparse([arr]) ;
console.log(csv) ;

1,,"b"

1
0
 Andy
Andy
7 august 2019 в 2:50
2019-08-07T14:50:15+00:00
Mai mult
Sursă
Editează
#8564029

Această soluție elimină, de asemenea, valori cum ar fi" "`: `` rezultatul const = ['', null, 'foo', ' ', nedefinit, 'bar'].filter(el => { return Boolean(el) && el.tapiterie() !== ''; }).alăturați-vă(', ');

console.log(rezultat); // => foo, bar ``

 Andy
Andy
Răspuns editat 7 august 2019 в 3:16
0
0
Akash  Pulikkottil James
Akash Pulikkottil James
7 noiembrie 2016 в 8:05
2016-11-07T08:05:07+00:00
Mai mult
Sursă
Editează
#8564020
var arr = ["Pro1", "Pro2", "Pro3"];
console.log(arr.join());// Pro1,Pro2,Pro3
console.log(arr.join(', '));// Pro1, Pro2, Pro3
0
0
 alejandro
alejandro
1 iunie 2017 в 5:54
2017-06-01T05:54:53+00:00
Mai mult
Sursă
Editează
#8564022
var array = ["Zero", "One", "Two"];
var s = array + [];
console.log(s); // => Zero,One,Two
0
0
Eliya Cohen
Eliya Cohen
30 ianuarie 2019 в 2:27
2019-01-30T14:27:48+00:00
Mai mult
Sursă
Editează
#8564028

Ca de Chrome 72, l's posibil să se utilizeze Intl.ListFormat:

const vehicles = ['Motorcycle', 'Bus', 'Car'];

const formatter = new Intl.ListFormat('en', { style: 'long', type: 'conjunction' });
console.log(formatter.format(vehicles));
// expected output: "Motorcycle, Bus, and Car"

const formatter2 = new Intl.ListFormat('de', { style: 'short', type: 'disjunction' });
console.log(formatter2.format(vehicles));
// expected output: "Motorcycle, Bus oder Car"

const formatter3 = new Intl.ListFormat('en', { style: 'narrow', type: 'unit' });
console.log(formatter3.format(vehicles));
// expected output: "Motorcycle Bus Car"

Vă rugăm să rețineți că în acest fel este în stadiu incipient, astfel încât de la data de a posta acest raspuns, astept incompatibilitate cu versiunile mai vechi de Chrome și alte browsere.

0
0
Comunități asemănătoare 1
JavaScript, România - Moldova
JavaScript, România - Moldova
288 utilizatori
Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @php_ro, @python_ro, @devops_ro, @seo_ro Offtop: @holywars_ro
Deschide telegram
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
Utilizatori
Toate
Nou
Populare
1
ALEX EPRST
Înregistrat 13 ore în urmă
2
Daniel Gogov
Înregistrat 1 săptămână în urmă
3
工藤 芳則
Înregistrat 2 săptămâni în urmă
4
Ирина Беляева
Înregistrat 2 săptămâni în urmă
5
Darya Arsenyeva
Înregistrat 3 săptămâni în urmă
DE
ES
ID
JA
KO
NO
PT
RO
RU
TR
ZH
© kzen.dev 2023
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire