439 Stimmen

Konvertierung eines JS-Objekts in ein Array mit jQuery

Meine Anwendung erstellt ein JavaScript-Objekt wie das folgende:

myObj= {1:[Array-Data], 2:[Array-Data]}

Aber ich brauche dieses Objekt als Array.

array[1]:[Array-Data]
array[2]:[Array-Data]

Also habe ich versucht, dieses Objekt in ein Array zu konvertieren, indem ich mit $.each durch das Objekt und das Hinzufügen des Elements zu einem Array:

x=[]
$.each(myObj, function(i,n) {
    x.push(n);});

Gibt es eine bessere Möglichkeit, ein Objekt in ein Array zu konvertieren, oder vielleicht eine Funktion?

1voto

mailmindlin Punkte 616

Ich habe eine benutzerdefinierte Funktion erstellt:

    Object.prototype.toArray=function(){
    var arr=new Array();
    for( var i in this ) {
        if (this.hasOwnProperty(i)){
            arr.push(this[i]);
        }
    }
    return arr;
};

0voto

Kostas Punkte 120

Nach einigen Tests ist hier ein allgemeiner Konverter für Objekt-zu-Array-Funktionen:

Sie haben das Objekt:

var obj = {
    some_key_1: "some_value_1"
    some_key_2: "some_value_2"
};

Die Funktion:

function ObjectToArray(o)
{
    var k = Object.getOwnPropertyNames(o);
    var v = Object.values(o);

    var c = function(l)
    {
        this.k = [];
        this.v = [];
        this.length = l;
    };

    var r = new c(k.length);

    for (var i = 0; i < k.length; i++)
    {
        r.k[i] = k[i];
        r.v[i] = v[i];
    }

    return r;
}

Funktion Verwendung:

var arr = ObjectToArray(obj);

Sie erhalten:

arr {
    key: [
        "some_key_1",
        "some_key_2"
    ],
    value: [
        "some_value_1",
        "some_value_2"
    ],
    length: 2
}

So können Sie dann alle Schlüssel und Werte erreichen:

for (var i = 0; i < arr.length; i++)
{
    console.log(arr.key[i] + " = " + arr.value[i]);
}

Ergebnis in der Konsole:

some_key_1 = some_value_1
some_key_2 = some_value_2

Bearbeiten:

Oder in Form von Prototypen:

Object.prototype.objectToArray = function()
{
    if (
        typeof this != 'object' ||
        typeof this.length != "undefined"
    ) {
        return false;
    }

    var k = Object.getOwnPropertyNames(this);
    var v = Object.values(this);

    var c = function(l)
    {
        this.k = [];
        this.v = [];
        this.length = l;
    };

    var r = new c(k.length);

    for (var i = 0; i < k.length; i++)
    {
        r.k[i] = k[i];
        r.v[i] = v[i];
    }

    return r;
};

Und dann verwenden Sie wie:

console.log(obj.objectToArray);

0voto

Alireza Punkte 92209

Sie können eine einfache Funktion erstellen, die die Konvertierung von object a array kann so etwas die Arbeit für Sie mit reinem Javascript erledigen:

var objectToArray = function(obj) {
  var arr = [];
  if ('object' !== typeof obj || 'undefined' === typeof obj || Array.isArray(obj)) {
    return obj;
  } else {
    Object.keys(obj).map(x=>arr.push(obj[x]));
  }
  return arr;
};

oder dieses:

var objectToArray = function(obj) {
  var arr =[];
  for(let o in obj) {
    if (obj.hasOwnProperty(o)) {
      arr.push(obj[o]);
    }
  }
  return arr;
};

und rufen Sie die Funktion wie folgt auf und verwenden Sie sie:

var obj = {1:'a', 2:'b', 3:'c', 4:'d', 5:'e'};
objectToArray(obj); // return ["a", "b", "c", "d", "e"]

Auch in Zukunft werden wir etwas haben, das sich Object.values(obj) ähnlich wie Object.keys(obj) die Ihnen alle Eigenschaften als Array zurückgibt, aber in vielen Browsern noch nicht unterstützt wird...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X