Mau*_*o74 36 javascript underscore.js
我是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"
}
...
]}
Run Code Online (Sandbox Code Playgroud)
这就是我正在尝试的,我想获得整个数组/对象,以便我可以得到它的每个字段:
var goalId = 1;
_.each(result.goal, function(item){
_.find(result.goal, function(i){
return i = goalId;
});
});
Run Code Online (Sandbox Code Playgroud)
知道怎么做吗?
Ahm*_*lfy 93
这是2016年,我们可能不需要下划线才能实现这一目标.用Array.prototype.find()
.如果数组中的元素满足提供的测试函数,它将返回数组中的值.否则返回undefined.
// 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'
Run Code Online (Sandbox Code Playgroud)
浏览器支持
--------------------------------------------
| Chrome | Firefox | Safari | IE | Opera |
|--------|---------|--------|------|-------|
| 45 | 25 | 7.1 | Edge | 32 |
--------------------------------------------
Run Code Online (Sandbox Code Playgroud)
更新:我发现_.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"
}
]
Run Code Online (Sandbox Code Playgroud)
您可以使用以下内容:
var filteredGoal = _.where(goal, {id: "1"});
Run Code Online (Sandbox Code Playgroud)
Ved*_*Ved 21
您正在使用对象数组.所以,你可以使用:_.findWhere(查看列表并返回匹配所有键值对的第一个值)以获取基于id或其他键属性的所有属性.
var some= [
{Employee:'ved',id:20},
{Employee:"ved",age:25},
{Employee:"p",age:2}
];
var a = _.findWhere(some,{id:20});
console.log('searchResult',a);
Run Code Online (Sandbox Code Playgroud)
要获取索引,您可以使用以下内容:
var b = _.indexOf(some,a);
console.log('index',b);
Run Code Online (Sandbox Code Playgroud)
如果需要所有使用列表,请执行
TRY: _. where(它会查看数组中的每个匹配项,返回包含属性中列出的键值对的所有值的数组.)
var some= [
{Employee:"ved",id:20},
{Employee:"ved prakash",id:20},
{Employee:"anyone",id:2}
];
var a = _.where(some,{id:25});
console.log('searchResult',a);
Run Code Online (Sandbox Code Playgroud)
_.find:它仅用于检查值,而不是Key-value.
访问文档:_.find
Gwy*_*ell 15
简化了您的数据模型,但是这样的东西?
var goals = [{id:1, name:'Goal1'},
{id:2, name:'Goal2'},
{id:3, name:'Goal3'}];
function getGoal(id) {
return _.find(goals, function(goal) {
return goal.id === id;
});
}
alert(getGoal(2).name);
Run Code Online (Sandbox Code Playgroud)
你可以在这个jsFiddle中看到这个.
归档时间: |
|
查看次数: |
91636 次 |
最近记录: |