- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个文件夹/文件对象,如下所示:
{
about.html : {
path : './about.html'
},
about2.html : {
path : './about2.html'
},
about3.html : {
path : './about3.html'
},
folderName : {
path : './folderName',
children : {
sub-child.html : {
path : 'folderName/sub-child.html'
}
}
}
}
它可以深入包含子文件夹的 6-7 层。
我想找到 path 等于我提供的字符串的对象。不管有多深。
我使用的下划线仅执行顶层操作:
_.findWhere(files,{path:'./about2.html'}
如何进行深度嵌套搜索。 underscore 是否有相关功能,或者我是否需要构建一个具有递归功能的 mixin?
最佳答案
这不是最漂亮的代码,但我对其进行了测试,它似乎按照您要求的方式工作。它被设置为 lodash/下划线混合,但可以使用。用法如下:
_.findDeep(testItem, { 'path': 'folderName/sub-child.html' })
实现:
findDeep: function(items, attrs) {
function match(value) {
for (var key in attrs) {
if(!_.isUndefined(value)) {
if (attrs[key] !== value[key]) {
return false;
}
}
}
return true;
}
function traverse(value) {
var result;
_.forEach(value, function (val) {
if (match(val)) {
result = val;
return false;
}
if (_.isObject(val) || _.isArray(val)) {
result = traverse(val);
}
if (result) {
return false;
}
});
return result;
}
return traverse(items);
}
关于javascript - Underscore.js findWhere 嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27623896/
有没有办法使用 findWhere 和不相等的值(尝试使用它与标准)? 例如。 Books.findWhere('sale' : true, 'category': ne('exclude me')
我有一个主干集合,我正在尝试添加模型,以便我可以显示可用表单的列表,您可以在下拉列表中将其添加到 ui 中。这似乎一直有效,直到他们需要能够添加不止一种类型。 当我尝试添加到集合中时,我的 findW
我有一个如下所示的数据结构 var foo = [ { bar: { something: 123 }, baz: {
我正在寻找如何使用下划线 _.findWhere 并将其转换为 es6 原生 javascript? _.findWhere($scope.template, {id: $scope.approveT
此代码返回模型在集合中出现的次数的警报消息。我想只打印一次,并在用户名和密码匹配后立即退出循环。该怎么办? this.collection.find(function(
我有一个文件夹/文件对象,如下所示: { about.html : { path : './about.html' }, about2.html : { path : '.
我有一个列出所有用户的数组,每个新连接都会连同他们上传的文件名添加到该数组中。两个人各上传一个文件后的示例是: [ '{ 127.0.2.2: test.pdf}', '{ 127.0.0.1: as
我正在尝试使用 Underscore.js 库的 findWhere 函数从 node.js 服务器上的数组中高效地查找对象,但我不明白为什么它总是返回 undefined。 我使用 Node 控制台
当我使用它来搜索具有数组值的对象时, _.findwhere 总是返回给我未定义。 var nameArray = [{name:'firstName',value : ['Amruta','Swap
我有一个文件夹/文件对象,如下所示: { about.html : { path : './about.html' }, about2.html : { path : '.
where() 和 findWhere() 方法返回集合中的模型本身还是模型的副本?正如我读过的documentation它没有明确具体地说明这种情况。 第一种方式,可以修改它的返回结果并使用 set
我有以下下拉代码 -1) && AddEditUserCtrl.isInEditMode" data-ng-change="AddEditUserCtrl.roleChanged(A
我必须将以下内容添加到此过滤器, “如果传入的 CountryID 等于 (999),则搜索应该搜索所有国家,而不是按国家过滤。” 我目前拥有的是这个,这让我很困惑。 var query = rep.
下划线有一个方便的小函数,findWhere()可用于在列表中查找特定结构,例如 myList = [ {'name': 'Thor'}, {'name': 'Odin'}, {'name
在使用 _.findWhere 函数时,我无法弄清楚如何在 underscore.js 中动态设置属性。 这是该函数的文档: findWhere_.findWhere(list, properties
有人可以帮助我理解为什么 Lodash 在使用 findWhere 获取对象时会进行引用复制,这使我能够将整个变量绑定(bind)到范围并根据用户操作动态更改它。但是使用复制运算符完成相同的操作无法更
如何进行以下过滤: [{ "id": 100, "title": "Tlt1", "tax": [{ "name": "Tax1", "id":
我正在使用分配了 id 生成器的域类构建一个 grails 应用程序(也就是说,它们不会自动生成)。假设我有一个域类 Parent 与 static hasMany = [children: Chil
我有一个具有许多属性的模型。其中之一是名为“developerId”的字段,其中包含一个与 MongoDB ObjectId 具有相同长度和特征的字符串(它实际上是一个字符串化的 ObjectId)。
我使用 find : find("from domain d where d.id=? AND d.name=?",[params.id, params.name]) 这给了我第一个匹配结果。 现在
我是一名优秀的程序员,十分优秀!