我有一个名为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
,我得到了密钥和值,但我怎样才能正确循环它们。
否则,请帮助我生成不同阵列的主题和考试
答案 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"
}
]
希望这就是你所需要的。