如何查找一个dstore集合中的项目而不是另一个dstore集合中的项目?

时间:2015-06-24 06:20:21

标签: dojo dstore

假设我有两个dstore集合:value1和value2。

我想找出value1中的项目,但不是value2中的项目。所以像这样:

var filterCollection = value1.filter(function(item) {
    return value2.notExists(item);
});

但是“notExists”功能,嗯,不存在。我如何使这个逻辑工作?

1 个答案:

答案 0 :(得分:0)

由于dstore默认不包含此功能,您可以编写自己的功能来比较dstores的内容,并根据需要使用结果。

这是一个通用的例子。您需要使用value1的内容填充value1dstore

简化示例。

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>