NEWS
findindex
-
Moin,
ich habe folgendes Array (Beispiel)
const sensors = { "devices": [ { "name": "tuer123", "code": "123" }, { "name": "tuer456", "code": "456" }, { "name": "tuer789", "code": "789" } ]};
Daraus möchte ich jetzt den Index des Eintrages ermitteln, der einen bestimmten suchcode hat.
Also in etwa so (was aber nicht funktioniert)var suchcode = "456"; var index = sensors.devices.code.findIndex(suchcode);
Wie mache ich es richtig?
Geht das überhaupt?Danke im Voraus
-
@tcj hi,
indexOf oder includes sollte deine Wünsche entsprechen
-
var objArray = [
{ id: 0, name: 'Object 0', otherProp: '321' },
{ id: 1, name: 'O1', otherProp: '648' },
{ id: 2, name: 'Another Object', otherProp: '850' },
{ id: 3, name: 'Almost There', otherProp: '046' },
{ id: 4, name: 'Last Obj', otherProp: '984' }
];klassich:
function findObjectByKey(array, key, value) {
for (var i = 0; i < array.length; i++) {
if (array[i][key] === value) {
return array[i];
}
}
return null;
}
var obj = findObjectByKey(objArray, 'id', 3);ES6
let obj = objArray.find(obj => obj.id == 3);ob es6 geht musst du ausprobieren bzw. hier mit deiner version abgleichen
https://nodejs.org/en/docs/es6/ -
@tcj sagte:
Wie mache ich es richtig?
Z.B. so
const arr = sensors.devices; var suchcode = "456"; var index = null; for(let i = 0; i < arr.length; i++) { if(arr[i].code == suchcode) { index = i; break; } }
-
var index = sensors.devices.code.findIndex(suchcode);
War schon fast richtig. Lies dir nochmal die Doku zu findIndex durch:
https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndexDie Methode findIndex() gibt den Index des ersten Elements im Array zurück, das die bereitgestellte Testfunktion erfüllt.
Du übergibst also nicht den gesuchten Code (woher soll das Programm wissen, wo sich dieser im Objekt befindet), sondern eine Funktion, die jeden Eintrag testet, ob er der gesuchte ist.
var index = sensors.devices.findIndex(obj => obj.code === suchcode);
wäre richtig.
-
Danke an alle für eure Hinweise.
Ich habe jetzt ein Funktion geschrieben, die das Array durchläuft.
In etwa so wie von @OliverW gezeigt.