Чтобы строить свой ответ, если вы уже используете underscore
или lodash
, вы можете использовать i ц _.any()/_.some()
функция:
var exists = _.any(this.conversations, function(conversation) {
return _.isEqual(conversation, response.data.conversation);
})
Вы также можете использовать Array.prototype.some
сделать такую же вещь:
var exists = this.conversations.some(function(conversation) {
return _.isEqual(conversation, response.data.conversation);
})
преимущества этих над вашим решением является то, что они вернутся, как только они находят (вместо повторения по всему массиву), хотя вы можете легко обновить свой код, чтобы вырваться из цикла раньше.
Кроме того, в то время как _.isEqual()
- это круто, вы можете избежать некоторых простых сопоставлений свойств (если ваши объекты достаточно плоские или, что еще лучше, у вас есть ключ, который однозначно идентифицирует разговор), чтобы определить, эквивалентны:
var exists = this.conversations.some(function(conversation) {
return conversation.id === response.data.conversation.id;
})
В каких типах данных содержатся данные 'this.conversations' - объекты или примитивы? Если объекты, у вас есть способ однозначно идентифицировать объект? – Peter
Я не уверен, как я могу это проверить? – nix9
@Peter [screen] (http://scr.hu/6s5a/uglgl) -> вот что я получил с 'console.log (this.conversations)' – nix9