Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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 使用数组中的lodash返回对象属性_Javascript_Lodash - Fatal编程技术网

Javascript 使用数组中的lodash返回对象属性

Javascript 使用数组中的lodash返回对象属性,javascript,lodash,Javascript,Lodash,我一直试图通过先过滤对象来返回它的属性。以下是我所做的: var characters = [ { 'name': 'barney', 'age': 36, 'blocked': false }, { 'name': 'fred', 'age': 40, 'blocked': true }, { 'name': 'pebbles', 'age': 1, 'blocked': false } ]; _.find(characters, function(chr) {

我一直试图通过先过滤对象来返回它的属性。以下是我所做的:

var characters = [
  { 'name': 'barney',  'age': 36, 'blocked': false },
  { 'name': 'fred',    'age': 40, 'blocked': true },
  { 'name': 'pebbles', 'age': 1,  'blocked': false }
];

_.find(characters, function(chr) {
     return  chr.age == 40
});
它返回我想要返回特定属性的整个对象。谁能指导我怎么做

任何帮助都将不胜感激。

正如elclanrs在之前的评论中提到的,显而易见的解决方案就是在过滤对象后访问属性
age

但如果您想在方法中完成,可以首先提取所有年龄值,然后对其使用allpy
find
函数:

var ageValues=u.pull(字符,'age')//返回[36,40,1]
var resultAgeValue=u2;.find(年龄值,函数(年龄值){
返回值<40
});
或者,链中的外观更好:

var resultAgeValue=(字符数)。pull('age')。find(函数(ageValue){
返回值<40
});
试试JSFIDLE:

您可以使用Lodash。顾名思义,它使您能够链接Lodash方法调用。在这里是合适的:

const字符=[
{'name':'barney','age':36,'blocked':false},
{'name':'fred','age':40,'blocked':true},
{'name':'pebbles','age':1,'blocked':false},
]
常量名称=(个字符)
.filter(c=>c.age<40)
.map('名称')
.value()
警报(名称)

速记

var array = [{a: 1, b: 2}, {a: 3, b: 4}]
_.map(array, 'a') // => [1, 3]

过滤完需要的对象后,只需访问属性
age
。我可以这样做,但我想在方法中完成。你的小提琴不起作用,它只返回第一个匹配字符。实际上,我的JSFIDLE通过desing返回第一个匹配字符!问题中的原始代码也只返回第一个匹配的对象-作者使用的是
find
,而不是
filter
!作者似乎是从洛达斯开始的。在考虑非排序数组时,只返回一个值没有多大意义。因此我使用了
filter
。我之所以使用find over filter,是因为filter循环遍历所有值,然后返回匹配的数组。感谢您帮助我解决了
pulk
不再是lodash中的问题:(我更新了答案以匹配此API更新,实际上
pulk
只是一个
map
。使用ES6箭头函数,这实际上更加清晰。
.map
还支持
.property
类似
.map(字符,'name')的迭代速记)
var array = [{a: 1, b: 2}, {a: 3, b: 4}]
_.map(array, 'a') // => [1, 3]
_.result(_.find(characters, function(obj) {
       return obj.age === 40;
}), 'name');