javascript - 下划线js通过ID查找项目

标签 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"
    }
    ...
]}

这就是我正在尝试的,我想获取整个数组/对象以便获取其中的每个字段:

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/

相关文章:

javascript - 将输入字符串与文本/元素匹配并突出显示 react 性

javascript - 如何在 native react 中停止 setInterval

javascript - jQuery 查找带有类但不包含嵌套元素的第一级元素

javascript - 当加载和渲染 html 中的图像时,是否存在类似就绪事件的事件?

javascript - 在javascript中将数字美化为最接近的数字,末尾加零

javascript - 按字母顺序对 Backbone 集合进行排序

javascript - 如何在将图像放入 div 之前检查图像的长宽比

javascript - 加载不同的CSS到IE

javascript - ES6/7等同于underscore的range函数

javascript - 为什么当我返回 `_.map` 时 `false` 返回未定义?