从数组angularjs获取动态键值

时间:2016-06-03 06:13:26

标签: angularjs mongodb underscore.js

我有一个名为settings

的mongo集合
      {
  "_id": "123",
  "type": "subject",
  "name": "Main",
  "list": [{
    "_id": "123",
    "name": "Maths"
  }, {
    "_id": "123",
    "name": " Physics"
  }]
}

{
  "_id": "123",
  "type": "exam",
  "name": "Activities",
  "list": [{
    "_id": "123",
    "name": "Reading"
  }, {
    "_id": "123",
    "name": "Fluency"
  }]
}

注意:我的mongo中提供的值仅供参考。

现在我已经使用设置集合

中的记录生成了一个数组
      self.sample = function() {
            self.settingsObj = {}
                // console.log(self.settings)
            _.each(self.settings, function(settings) {
                //_.each(self.settings, function(settings) {

                if (!self.settingsObj[settings.type]) {
                    self.settingsObj[settings.type] = []
                }
                self.settingsObj[settings.type] = settings.list
            })

            console.log(self.settingsObj)

        }

当我安装 settingsObj 时,我在我的控制台中得到这样的结果

Object {subject: Array[2], exam: Array[2]}

现在我想在范围变量

中循环它
   $scope.search = [{
                        "name": "",
                        "data": ""
}]

在这个名称里面我希望在这种情况下获得对象名称主题,考试和内部循环我想循环主题和考试的数组。

我尝试了另一个._each,我得到了密钥和值,但我怎样才能正确循环它们。

否则,请帮助我生成不同阵列的主题和考试

1 个答案:

答案 0 :(得分:0)

我不太确定我是否理解你的问题。

但如果我看得很清楚你正在使用Lodash.js库,那么我使用lodash提供以下脚本:

我假设你有这样的设置变量:

var settings =     [ {
    "_id": "123",
    "type": "subject",
    "name": "Main",
    "list": [{
        "_id": "123",
        "name": "Maths"
    }, {
        "_id": "123",
        "name": " Physics"
    }]
}
,
{
    "_id": "123",
        "type": "exam",
        "name": "Activities",
        "list": [{
    "_id": "123",
    "name": "Reading"
}, {
    "_id": "123",
    "name": "Fluency"
}]
}];

我创建了处理这些设置的函数:

function createSearch(settings){
    return _(settings).flatMap(toSearchArray).value();
}

function toSearchArray(setting){
    return _(setting.list).map("name").map(toSearchObject).value()

    function toSearchObject(data){
        return {
            name: setting.type,
            data: data
        }
    }
}

当你致电createSearch(settings)时 你会收到这个结果:

[
  {
    "name": "subject",
    "data": "Maths"
  },
  {
    "name": "subject",
    "data": " Physics"
  },
  {
    "name": "exam",
    "data": "Reading"
  },
  {
    "name": "exam",
    "data": "Fluency"
  }
]

希望这就是你所需要的。