Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何基于JSON数组字段从主干集合中提取模型_Javascript_Backbone.js - Fatal编程技术网

Javascript 如何基于JSON数组字段从主干集合中提取模型

Javascript 如何基于JSON数组字段从主干集合中提取模型,javascript,backbone.js,Javascript,Backbone.js,我有一个模型集合,其中模型包含一个字段,比如数据,它是JSON的数组 data [{x : 3, y:4}] 现在我想使用主干收集的where功能: var model= coll.where ({ data : data }) 它没有输出。 我不确定我是否做得对,还是遗漏了什么。如果您了解该解决方案的工作原理,请指导我: 您将看到,它只需扫描模型并使用比较属性==。当您使用时==或===(或!=或=)要比较数组,比较的是引用,而不是内容;例如,这是错误的: [1] === [1] 结果是

我有一个模型集合,其中模型包含一个字段,比如数据,它是JSON的数组

data [{x : 3, y:4}]
现在我想使用主干收集的where功能:

var model= coll.where ({
data : data
})
它没有输出。 我不确定我是否做得对,还是遗漏了什么。如果您了解该解决方案的工作原理,请指导我:

您将看到,它只需扫描模型并使用
比较属性==。当您使用
时==
===
(或
!=
=
)要比较数组,比较的是引用,而不是内容;例如,这是错误的:

[1] === [1]
结果是,使用搜索数组时效果不佳,
其中
是搜索简单标量值的快捷方式

如果需要搜索数组,则可以直接使用,也可以使用来帮助比较:

var models = coll.filter(function(m) {
    return _.isEqual(m.get('a'), data);
});
如果需要一个匹配项,请使用而不是
过滤器


演示:

是每个模型中的数据还是您的模型包装在
数据中?
因此,无论您在哪里向模型
model.set(model.toJSON().data)
添加值,都要添加这一行,这样您的模型将直接包含属性,并且您可以遵循backbonejs.org中的示例,但是我在一个模型中同时包含了scaler和array值。在这种情况下,什么是好方法?是的,
filter
/
find
\一起使用。isEqual
适用于标量和数组。
var models = coll.filter(function(m) {
    return _.isEqual(m.get('a'), data);
});