it-swarm.com.de

So finden Sie den Index eines Objekts in einem Array

Ich habe eine JSON-Zeichenfolge als:

  var Str="[{ 'label': 'Month'},{ label: 'within'},{ label: 'From'},
         { label: 'Where'},]";

Ich habe es durch eval in ein Objekt umgewandelt:

      var tagString = eval(Str); 

Ich möchte den Index des Monats ohne Schleife erhalten.

Gibt es eine bessere Möglichkeit, den Index eines Objekts in einem Array abzurufen, ohne Schleifen zu verwenden?

Danke im Voraus!

4
amol challawar

Wenn das alles Bezeichnungen sind, können Sie die Struktur wie folgt ändern, so dass es "Eine Reihe von Bezeichnungen" ist, was meiner Meinung nach richtiger wäre.

var Str = '["Month","within","From","Where"]';

Parsen Sie sie dann mit JSON.parse oder, da Sie jQuery verwenden, mit $.parseJSON , damit es in mehreren Browsern funktioniert:

var labels = JSON.parse(Str);

labels sollte jetzt ein Array sein, das Sie mit Array.indexOf verwenden können.

var index = labels.indexOf('Month');

Es ist ES5 und die meisten modernen Browser unterstützen es. Für ältere Browser benötigen Sie eine Polyfill , die leider auch eine Schleife verwendet.

14
Joseph

Analysiere json nicht mit eval! Verwenden Sie JSON.parse . Array.map ist eine gute Alternative zum Schleifen hier:

var str = '[{ "label": "Month"}, { "label": "within"}, { "label": "From"}, { "label": "Where"}]';
var data = JSON.parse(str);
var index = data.map(function(d) { return d['label']; }).indexOf('Month')

jsFiddle

25
Eric

Hinweis: Wenn Sie ein bestimmtes Element in JSON anhand seines Werts erhalten möchten, bin ich auf diese Antwort gestoßen und habe darüber nachgedacht, sie weiterzugeben.

Sie können Array.splice () verwenden.

Als erstes benutzen @elclanrs und @Eric JSON.parse ();

var Str = '[{ "label": "Month"}, { "label": "within"}, { "label": "From"}, { "label": "Where"}]';

var item = JSON.parse(Str);

item = item.splice({label:"Month"},1);

und sein ES5.

Den Code finden Sie hier

var Str = '[{ "label": "Month"}, { "label": "within"}, { "label": "From"}, { "label": "Where"}]';
var item = JSON.parse(Str);

item = item.splice({label:"Month"},1);

console.log(item);
2
Khalil Malki