Как найти предметы, которые есть в одной коллекции dstore, но нет в другой?
Предположим, у меня есть две коллекции dstore: value1 и value2.
Я хочу узнать, какие элементы находятся в значении1, но не в значении2. Так что-то вроде этого:
var filterCollection = value1.filter(function(item) {
return value2.notExists(item);
});
Но функция notExists, ну, не существует. Как мне заставить эту логику работать?
1 ответ
Поскольку эта функция не включена по умолчанию в dstore
, вы можете написать свою собственную функцию для сравнения содержимого вашего dstores
и использовать результат, как вы хотите.
Вот общий пример. Вам нужно заселить value1
а также value1
с содержанием вашего dstore
,
Упрощенный пример.
http://jsbin.com/fozeqamide/edit?html,console,output
Версия без использования indexOf ()
http://jsbin.com/nihelejodo/edit?html,console,output
То, как вы зацикливаетесь на своем datastore
связано с его структурой данных.
Примечания. Это общий пример, поскольку вопрос не содержит ни исходного кода, ни примера данных в dstore
,
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Builder</title>
<style>
</style>
<script>
window.app = {
value1: [1, 2, 3, 4, 5, 6, 4, 8], // populate with date for valu1 dstore
value2: [1, 2, 6, 4, 8], // populate with date for valu1 dstore
valueNotExists: [],
start: function () {
this.notExists();
},
notExists: function () {
this.valueNotExists = this.value1.filter(function (x) {
return this.value2.indexOf(x) < 0;
}.bind(this));
console.log(this.valueNotExists);
},
};
</script>
</head>
<body onload="window.app.start();">
</body>
</html>