按链中的键查找数组元素
Find array element by key in a chain
我使用了一个下划线链,并且卡在了它的最后一位。
我只需要它查看一个对象数组,并通过它的键返回正确的对象。这是我的
var item = _.chain(items)
.findwhere({module: modulename})
.result('customUrl')
//here is where the problem is
.find(function(v,k){ return k == stateName })
.value();
所以这个工作直到那个为止。find。在物体的那个点上,find正在寻找这样的东西:
[{"obj1" : ["1","2"]},{"obj2" : ["3","4"]}]
我只想让它返回一个具有相同密钥的,该密钥存储在正在传递的变量stateName中。因此,如果stateName是"obj1",它将返回me["1","2"]。如果有更好的方法不用下划线,我会洗耳恭听,但我现在一直在使用它。
感谢
编辑:我根据这里的答案做了一个尝试。
需要明确的是,这就是我的数据:
[
{"module":"module1",
"customUrl":[{"mod1":["1","2"]},{"mod2":["1","2"]}]
},
{"module":"module2",
"customUrl":[{"mod3":["true","false"]},{"mod4":["5","6"]}]
}
]
尝试:
checkitem = _.chain(currentState)
.findWhere({module: moduleName})
.result('customUrl')
.find(function(v){ return v.hasOwnProperty(stateName)})
.values()
.flatten()
.value();
因此,如果var stateName是mod1,我希望它返回我["1","2"],就像下面的答案一样,我认为我的链接有问题。谢谢
如果您确定只有一个匹配,那么您可以使用find
,因为它将在获得第一个匹配后返回。
var items = [{
"obj1": ["1", "2"]
}, {
"obj2": ["3", "4"]
}, {
"obj3": ["5", "6"]
}];
var stateName = "obj1";
var item = _.chain(items)
.find(function(currentObject) {
return _.has(currentObject, stateName);
})
.values()
.flatten()
.value();
console.log(item);
# [ '1', '2' ]
在
find
函数中,只有当正在处理的当前对象具有stateName
和_.has
函数中名称的属性时,我们才返回true
。在这一点上,结果将是这样的{ obj1: [ '1', '2' ] }
如果这是真的,那么将只返回该对象。由于您只需要值,我们对其调用
values
函数。此时,结果将类似于[ [ '1', '2' ] ]
然后
values
实际上返回一个值数组。因此,我们用flatten
函数将其压平以获得实际值。在这里,最终结果将是[ '1', '2' ]
您可以使用in
查看属性是否存在(它将成为您的谓词):
var item = _.chain(items)
.findwhere({module: modulename})
.result('customUrl')
.find(function(v){ return stateName in v })
.value();
或者:
.find(function(v){ return v.hasOwnProperty(stateName) })
如果使用filter而不是find怎么办?
.filter(function(v, k) {
return k === stateName;
});
相关文章:
- 查找数组javascript中包含的元素类型
- 按链中的键查找数组元素
- 正在查找数组中第一个匹配元素的索引
- 如何查找数组中所有出现的元素的索引(Ramda.js方式)
- 按键查找数组中最接近的 2 个元素
- 使用 JavaScript 查找数组中最大的元素
- 多次查找数组中相同元素的索引
- 查找数组中最大的元素
- 我的算法中查找数组最大元素的缺陷在哪里
- 查找数组/范围javascript中所有丢失的元素
- 查找数组中最重复出现的元素
- 查找数组中的下一个元素,如果最新的先去
- 如何在jQuery中通过属性查找数组中的元素
- 查找数组中最短元素的第一个实例
- 使用递归查找数组中的元素
- 给定每个小于数组大小的元素,查找数组中的第一个重复元素
- Lodash /underscore查找数组中非唯一元素的数量
- 使用正则表达式匹配查找数组中的元素,而不遍历数组
- 查找数组javascript中的特定元素
- 查找数组元素的索引,而不使用内置indexOf函数