试试这个,它会返回物品 Anna 和 Julie
var data = [
{ id: 1, name: 'Anna', delivery: { city: "Amsterdam" }, invoice: { city: "Amsterdam" } },
{ id: 2, name: 'Anton', delivery: { city: "Amsterdam" }, invoice: { city: "Berlin" } },
{ id: 3, name: 'John', delivery: { city: "Berlin" }, invoice: { city: "Paris" } },
{ id: 4, name: 'Julie', delivery: { city: "Paris" }, invoice: { city: "Paris" } }
];
var myStore = new Memory({ data: data, idProperty: 'id' });
var myResultsSet = myStore.filter(function (object) {
return object.delivery.city === object.invoice.city;
});
myResultsSet.forEach(function (item) {
console.log("item ", item.name);
});
基本上你可以创建一个你自己的函数来传递给filter(),你可以用它来编写你自己的比较逻辑。
查看这里了解更多详情
https://github.com/SitePen/dstore/blob/master/docs/Collection.md
过滤器(查询)
这会过滤集合,返回一个新的子集集合。这
查询可以是一个对象,也可以是一个过滤器对象,具有属性
定义匹配对象的约束。一些商店,如服务器
或 RQL 存储,可以接受基于字符串的查询。内存中的存储
功能(如 dstore/Memory)可以接受过滤功能
同样,但使用过滤器生成器将确保最大
跨商店兼容性。
EDIT:具有更多要比较的属性的示例。您的函数只需要返回一个真或假(如果对象符合您的比较条件,则为真)
var data = [
{ id: 1, name: 'Anna', delivery: { city: "Amsterdam", price: 5 }, invoice: { city: "Amsterdam", price: 20 } },
{ id: 2, name: 'Anton', delivery: { city: "Amsterdam", price: 8 }, invoice: { city: "Berlin", price: 7 } },
{ id: 3, name: 'John', delivery: { city: "Berlin", price: 10 }, invoice: { city: "Paris", price: 20 } },
{ id: 4, name: 'Julie', delivery: { city: "Paris", price: 2 }, invoice: { city: "Paris", price: 3 } }
];
//example for custom filtering with nested properties
var myStore = new Memory({ data: data, idProperty: 'id' });
var myResultsSet = myStore.filter(function (object) {
if(object.delivery.city === object.invoice.city){
if (object.delivery.price < 5 && object.invoice.price < 5)
return true;
}else
return false;
});
myResultsSet.forEach(function (item) {
console.log("item ", item.name);
});