【问题标题】:Extract from nested attribute从嵌套属性中提取
【发布时间】:2014-03-31 20:55:22
【问题描述】:

我有以下模型属性:

[{
    "id": 1,
    "details": {
        "name": "Sun Tzu",
        "height": "180",
    },
    "lists": [
        [{
            "coworkers": "company cool",
            "friends": "School",
        }],
        [{
            "coworkers": "company nice",
            "friends": "Childhood",
        }]
    ]
}]

是的,我知道这很令人困惑,但我正在尝试理解嵌套模型。

我想在一个视图(表格行)中显示id:1 模型的所有friends
例如:School, Childhood

我该怎么做? 提前致谢!

【问题讨论】:

  • lists数组中为什么是单项数组?
  • 如何显示行?向我们展示您已经拥有的东西。
  • 有很多解决方案 - 即使在 SO 上也是如此。这是一个:stackoverflow.com/questions/6535948/…

标签: javascript backbone.js underscore.js


【解决方案1】:
var friends = _.chain(data)
    .findWhere({ id: 1 })
    .result('lists')
    .flatten(false)
    .pluck('friends')
    .value();

【讨论】:

  • 应该是.pluck(0).pluck('friends'),但仍然是+1
  • @Bergi 我的印象是这些数组中的每一个都可能有多个朋友,所以 pluck(0) 可能不正确。
【解决方案2】:

你可以链接函数来获得你正在寻找的输出

console.log(_.chain(data)
    .find(function(currentObject) {
        return currentObject.id === 1;
    })
    .pick("lists")
    .flatten(false)
    .pluck("friends")
    .value());

输出

[ 'School', 'Childhood' ]

【讨论】:

    猜你喜欢
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 2020-08-14
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多