Ich versuche, wenn ein Objekt zu überprüfen, ist bereits in einer Reihe, im Anschluss an diese Antwort hier: How to determine if object is in arrayprüft Objekt bereits in Array funktioniert nicht
ich die Funktion angepasst um meine Bedürfnisse anzupassen, und jetzt sieht es so aus dies:
var _createDatesArray, _objInArray;
_objInArray = function(array, obj) {
var i;
i = 0;
while (i < array.length) {
console.log("array[i] == obj is ", array[i] === obj, " array[i] is ", array[i], " and obj is ", obj);
if (array[i] === obj) {
return true;
}
i++;
}
};
_createDatesArray = function(val) {
var result;
if (val != null) {
result = {
text: val
};
if (!_objInArray(scope.datesQuestion.dates, result)) {
scope.datesQuestion.dates.push(result);
}
return console.log(scope.datesQuestion.dates);
}
};
Was ich tun muss, ist grundsätzlich festzustellen, ob das Objekt bereits in dem Array ist, und wenn ist, t true zurück.
Wenn das Debuggen, das Ergebnis des Konsolenprotokolls ist die folgende:
array [i] == obj falsche Array ist [i] ist, {Text: "10/08/17"} und obj ist {text: "10/08/17"}
und die Funktion sagt sie verschieden sind (array[i] == obj is false
), aber sie sehen gleich zu mir.
Ich habe auch die Art der beiden, die dies:
typeof array[i] is "object"
typeof obj is "object"
können Sie mir helfen mit diesem? Warum sind sie anders? was kann anders sein?
_createDatesArray
wird aufgerufen, wenn $scope
meiner Winkel App seinen Wert ändert auf der Basis eines ng-Modell, aber ich glaube nicht, das
Zwei Objekte sind nur dann gleich, wenn sie das gleiche Objekt sind (unterschiedliche Referenzen). Überprüfen Sie '{a: 'a'} === {a: 'a'}' => falsch. – dfsq