Wie gebe ich den Index der ersten Änderung (Index 2 in diesem Fall, wo es von 0
zu 1
geändert wurde) gegeben Array [0, 0, 1, 1, 1]
.Return-Index der ersten Array-Änderung
Ein anderes Beispiel, [1, 1, 1, 1, 1, 2, 2]
sollte 5
zurückgeben.
Wie gebe ich den Index der ersten Änderung (Index 2 in diesem Fall, wo es von 0
zu 1
geändert wurde) gegeben Array [0, 0, 1, 1, 1]
.Return-Index der ersten Array-Änderung
Ein anderes Beispiel, [1, 1, 1, 1, 1, 2, 2]
sollte 5
zurückgeben.
Verwendung findIndex
:
var a = [1, 1, 1, 1, 1, 2, 2];
var b = a.findIndex(v => a[0] !== v);
console.log(b);
Beachten Sie, dass Find nicht von IE unterstützt wird, aber Sie können die polyfill bei der Dokumentation Seite I verknüpft gefunden verwenden.
. Das erste Beispiel verwendet zwei Scans des Arrays, wenn nur eines benötigt wird. – Alnitak
Änderte die Antwort @ Alnitak, ich hatte zuerst die Illusion, dass 'finden' wird von mehr Browser-Versionen als' findIndex' unterstützt, aber beide werden von den gleichen Versionen unterstützt ... – baao
Gut - das erste Beispiel war ziemlich arm, IMHO. Es wurde nicht nur zweimal gescannt, sondern in einem generischen Anwendungsfall hätte es ein seltsames Verhalten gehabt, wenn einer der Werte "undefiniert" war. – Alnitak
Sie Array#some
für ES5
function getChangeIndex(array) {
var index = -1;
array.some(function (a, i, aa) {
if (a !== aa[0]) {
index = i;
return true;
}
});
return index;
}
console.log(getChangeIndex([0, 0, 1, 1, 1])); // 2
console.log(getChangeIndex([1, 1, 1, 1, 1, 2, 2])); // 5
console.log(getChangeIndex([1, 1, 1, 1])); // -1 (no change)
Sie sollten "index" auf "-1" initialisieren, falls nichts gefunden wird! –
@ibrahimmahrir, rechts, bleibt es im 'indexOf' Ergebnisschema. –
@dv, um zu erwähnen, warum? –
Ich hoffe, dies lösen
var givenArray = [1,1,1,1,1,2,2];
function result(arr) {
var PreValue = undefined;
for(var i in arr){
if(PreValue != undefined && PreValue != arr[i]) {
return i;
}
PreValue = arr[i];
}
}
console.log(result(givenArray));
Schleife durch, vergleichen Elemente verwenden könnte, Index der Elemente, die nicht gleich sind. – Craicerjack
Sie könnten eine for-Schleife und Variable verwenden, die das erste Element enthält, und dann prüfen, ob das aktuelle Element sich von dem ersten unterscheidet. – Feirell
Es gibt viele Möglichkeiten, dies zu tun. Bitte zeigen Sie, was Sie versucht haben. Dies ist kein Dienst zum Schreiben von freiem Code – charlietfl