我是 Underscore js 的新手,对如何使用它有点困惑。我有一组“目标”,我想通过 ID 找到其中一个。
这是数据:
{"goal":[
{
"category" : "education",
"title" : "Charlie University",
"description" : "Lorem ipsum dolor sit amet",
"date" : "01/03/2020",
"value" : 50000,
"achievability" : 3,
"experimental_achievability": 3,
"suggested": false,
"accounts": [
{
...
},
{
...
}
],
"articles": [
{
...
},
{
...
},
{
...
}
],
"related_goals": [
{
...
}
],
"id":"1"
},
{
"category" : "family",
"title" : "Getting married",
"description" : "Lorem ipsum dolor sit amet",
"date" : "01/03/2022",
"value" : 10000,
"achievability" : 3,
"experimental_achievability": 2,
"suggested": true,
"accounts": [
{
...
}
],
"articles": [
{
...
},
{
...
},
{
...
}
],
"related_goals": [
{
...
}
],
"id":"2"
}
...
]}
这就是我正在尝试的,我想获取整个数组/对象以便获取其中的每个字段:
var goalId = 1;
_.each(result.goal, function(item){
_.find(result.goal, function(i){
return i = goalId;
});
});
知道怎么做吗?
最佳答案
更新
现在是 2016 年,我们可能不需要下划线来实现这一目标。使用 Array.prototype.find()
。如果数组中的元素满足提供的测试函数,它会返回数组中的值。否则返回未定义。
// Underscore
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false },
{ 'user': 'pebbles', 'age': 1, 'active': true }
]
_.find(users, function (o) { return o.age < 40; })
// output: object for 'barney'
// Native
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false },
{ 'user': 'pebbles', 'age': 1, 'active': true }
]
users.find(function (o) { return o.age < 40; })
// output: object for 'barney'
浏览器支持
--------------------------------------------
| Chrome | Firefox | Safari | IE | Opera |
|--------|---------|--------|------|-------|
| 45 | 25 | 7.1 | Edge | 32 |
--------------------------------------------
有关 MDN 的 polyfill 的更多信息
更新:我发现_.where
总是返回一个数组。 _.findWhere
返回它找到的第一个对象,因此如果您希望返回单个对象,最好使用它。
您可以使用 _.where
这要容易得多。
如果是这样的:
var goal = [
{
"category" : "education",
"title" : "Charlie University",
"description" : "Lorem ipsum dolor sit amet",
"date" : "01/03/2020",
"value" : 50000,
"achievability" : 3,
"experimental_achievability": 3,
"suggested": false,
"accounts": [],
"articles": [],
"related_goals": [],
"id":"1"
},
{
"category" : "education",
"title" : "Charlie University",
"description" : "Lorem ipsum dolor sit amet",
"date" : "01/03/2020",
"value" : 50000,
"achievability" : 3,
"experimental_achievability": 3,
"suggested": false,
"accounts": [],
"articles": [],
"related_goals": [],
"id":"2"
},
{
"category" : "education",
"title" : "Charlie University",
"description" : "Lorem ipsum dolor sit amet",
"date" : "01/03/2020",
"value" : 50000,
"achievability" : 3,
"experimental_achievability": 3,
"suggested": false,
"accounts": [],
"articles": [],
"related_goals": [],
"id":"3"
},
{
"category" : "education",
"title" : "Charlie University",
"description" : "Lorem ipsum dolor sit amet",
"date" : "01/03/2020",
"value" : 50000,
"achievability" : 3,
"experimental_achievability": 3,
"suggested": false,
"accounts": [],
"articles": [],
"related_goals": [],
"id":"4"
}
]
你可以使用类似的东西:
var filteredGoal = _.where(goal, {id: "1"});
关于javascript - 下划线js通过ID查找项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12744447/