it-swarm.com.de

jQuery: Konvertiert ein Javascript-Array in einen String

Ich versuche, eine "Wert" -Liste zu durchlaufen und sie in eine Zeichenfolge umzuwandeln. Hier ist der Code: 

var blkstr = $.each(value, function(idx2,val2) {                    
     var str = idx2 + ":" + val2;
     alert(str);
     return str;
}).get().join(", ");    

die Funktion alert () funktioniert einwandfrei und zeigt den richtigen Wert an. Aber irgendwie bekommt die .get () - Funktion von jquery nicht das richtige Objekt und schlägt fehl. Was mache ich falsch?

100
Neo

Wenn value ein assoziatives Array ist, funktioniert der Code gut:

var value = { "aaa": "111", "bbb": "222", "ccc": "333" };
var blkstr = [];
$.each(value, function(idx2,val2) {                    
  var str = idx2 + ":" + val2;
  blkstr.Push(str);
});
console.log(blkstr.join(", "));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

(Ausgabe erscheint in der Dev-Konsole) 

Wie Felix erwähnt hat, iteriert each() nur das Array, nichts weiter.

122
Shadow Wizard

Das Konvertieren von Array in String ist so einfach!

var A = ['Sunday','Monday','Tuesday','Wednesday','Thursday']
array = A + ""

Das ist es jetzt A ist eine Zeichenfolge. :)

108
Spiderman

Sie können .toString() verwenden, um ein Array mit einem Komma zu verbinden.

var array = ['a', 'b', 'c'];
array.toString(); // result: a,b,c

Oder setzen Sie das Trennzeichen mit array.join('; '); // result: a; b; c

93
Justin

ich bin mir nicht sicher, ob Sie das wollten

var arr = [A, B, C];
var arrString = arr.join(", ");

Daraus ergibt sich folgende Ausgabe:

A, B, C

43
Nicholas

Vier Methoden zum Konvertieren eines Arrays in einen String.

Zu einer Zeichenfolge zwingen

var arr = ['a', 'b', 'c'] + [];  // "a,b,c"

var arr = ['a', 'b', 'c'] + '';  // "a,b,c"

Anrufen von .toString()

var arr = ['a', 'b', 'c'].toString();  // "a,b,c"

Explizites Verbinden mit .join()

var arr = ['a', 'b', 'c'].join();  // "a,b,c" (Defaults to ',' seperator)

var arr = ['a', 'b', 'c'].join(',');  // "a,b,c"

Sie können andere Trennzeichen verwenden, z. B. ', '

var arr = ['a', 'b', 'c'].join(', ');  // "a, b, c"

Verwenden von JSON.stringify()

Dies ist sauberer, da Zeichenfolgen innerhalb des Arrays zitiert werden und geschachtelte Arrays ordnungsgemäß verarbeitet werden.

var arr = JSON.stringify(['a', 'b', 'c']);  // '["a","b","c"]'
32
VIJAY P

jQuery.each läuft nur über das Array, er macht mit dem Rückgabewert nichts. Sie suchen nach jQuery.map (Ich denke auch, dass get() nicht notwendig ist, da Sie sich nicht mit jQuery-Objekten befassen):

var blkstr = $.map(value, function(val,index) {                    
     var str = index + ":" + val;
     return str;
}).join(", ");  

DEMO


Warum aber in diesem Fall überhaupt jQuery verwenden? map führt nur einen unnötigen Funktionsaufruf pro Element ein.

var values = [];

for(var i = 0, l = value.length; i < l; i++) {
    values.Push(i + ':' + value[i]);
}

// or if you actually have an object:

for(var id in value) {
    if(value.hasOwnProperty(id)) {
        values.Push(id + ':' + value[id]);
    }
}

var blkstr = values.join(', ');

∆: Der Rückgabewert wird nur verwendet, wenn er die Elemente weiterhin durchlaufen soll oder nicht. Die Rückgabe eines "falschen" Wertes stoppt die Schleife.

16
Felix Kling

das ist meine Funktion, Objekt oder Array in Json konvertieren 

function obj2json(_data){
    str = '{ ';
    first = true;
    $.each(_data, function(i, v) { 
        if(first != true)
            str += ",";
        else first = false;
        if ($.type(v)== 'object' )
            str += "'" + i + "':" + obj2arr(v) ;
        else if ($.type(v)== 'array')
            str += "'" + i + "':" + obj2arr(v) ;
        else{
            str +=  "'" + i + "':'" + v + "'";
        }
    });
    return str+= '}';
}

ich bearbeite nur v0.2 ^. ^

 function obj2json(_data){
    str = (($.type(_data)== 'array')?'[ ': '{ ');
    first = true;
    $.each(_data, function(i, v) { 
        if(first != true)
            str += ",";
        else first = false;
        if ($.type(v)== 'object' )
            str += '"' + i + '":' + obj2json(v) ;
        else if ($.type(v)== 'array')
            str += '"' + i + '":' + obj2json(v) ;
        else{
            if($.type(_data)== 'array')
                str += '"' + v + '"';
            else
                str +=  '"' + i + '":"' + v + '"';
        }
    });
    return str+= (($.type(_data)== 'array')? ' ] ':' } ');;
}
4
buitanan
var arr = new Array();

var blkstr = $.each([1, 2, 3], function(idx2,val2) {                    
    arr.Push(idx2 + ":" + val2);
    return arr;
}).join(', ');

console.log(blkstr);

ODER 

var arr = new Array();

$.each([1, 2, 3], function(idx2,val2) {                    
    arr.Push(idx2 + ":" + val2);

});

console.log(arr.join(', '));
2
Santosh Linkha

ein Array in einen GET-Parameter-String konvertieren, der an eine URL angehängt werden kann, kann folgendermaßen durchgeführt werden 

function encodeGet(array){
    return getParams = $.map(array , function(val,index) {                    
        var str = index + "=" + escape(val);
        return str;
   }).join("&");
}

rufen Sie diese Funktion als auf

var getStr = encodeGet({
    search:     $('input[name="search"]').val(),
    location:   $('input[name="location"]').val(),
    dod:        $('input[name="dod"]').val(),
    type:       $('input[name="type"]').val()
});
window.location = '/site/search?'+getStr;

welcher Benutzer wird an die/Site/Suche weitergeleitet? Seite mit den get-Parametern, die in dem für encodeGet angegebenen Array angegeben sind.

2
Fydo

Ich brauchte ein Array, um eine String-Darstellung eines Arrays zu werden. Ich meine, ich brauchte das

var a = ['a','b','c'];
//became a "real" array string-like to pass on query params so was easy to do:
JSON.stringify(a); //-->"['a','b','c']"

vielleicht braucht es jemand :)

2
Magico

Array sollte nicht mit Listen verwechselt werden ....__ Dies ist eine Liste: {...} und hat keine Länge oder andere Array-Eigenschaften.

Dies ist ein Array: [...] und Sie können Array-Funktionen, -Methoden und so verwenden, wie jemand vorgeschlagen hat: someArray.toString ();

"someObj.toString ();" funktioniert nur mit anderen Objekttypen, wie z. B. Listen. ;-)

1
Pedro Ferreira

Array.prototype.toString ()

Die toString () - Methode gibt einen String zurück, der das angegebene Array und seine Elemente darstellt.

var months = ["Jan", "Feb", "Mar", "Apr"];
months.toString(); // "Jan,Feb,Mar,Apr"

Syntax

arr.toString()

Rückgabewert

Eine Zeichenfolge, die die Elemente des Arrays darstellt.

für weitere Informationen:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString

1
KARTHIKEYAN.A

arbeitsbeispiel

var arr = ['a', 'b', 'c', 1, 2, '3'];

// using toString method
var rslt = arr.toString(); 
console.log(rslt);

// using join method. With a separator '-'
rslt = arr.join('-');
console.log(rslt);

// using join method. without a separator 
rslt = arr.join('');
console.log(rslt);
0
Deepu Reghunath

Hier ist ein Beispiel mit Unterstrichfunktionen.

var exampleArray = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
var finalArray = _.compact(_.pluck(exampleArray,"name")).join(",");

Das Endergebnis wäre "moe, larry, curly"

0
sabin