Как найти предметы, которые есть в одной коллекции 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>
Другие вопросы по тегам