我需要帮助以javascript(下划线)控制循环及其条件,以正确格式化数组
我正在尝试创建一个对象数组,这些对象将被发布到按timeToEat和DayOfWeek细分的菜单中。它应该在daysOfWeek数组中的每个索引上循环,如果对象的daysOfWeek(来自db)与daysOfWeek的索引匹配(“tue”==“tue”),它应该在适当的槽中输入记录 数据库中的记录如下所示:我需要帮助以javascript(下划线)控制循环及其条件,以正确格式化数组,javascript,underscore.js,Javascript,Underscore.js,我正在尝试创建一个对象数组,这些对象将被发布到按timeToEat和DayOfWeek细分的菜单中。它应该在daysOfWeek数组中的每个索引上循环,如果对象的daysOfWeek(来自db)与daysOfWeek的索引匹配(“tue”==“tue”),它应该在适当的槽中输入记录 数据库中的记录如下所示: { "timeToEat" : "amSnack", "dayOfTheWeek" : "tue", "onTheMenu" : "apples", "_id" : "xT
{ "timeToEat" : "amSnack",
"dayOfTheWeek" : "tue",
"onTheMenu" : "apples",
"_id" : "xTziTnHYmgh5obYDB" }
amSnacks: function() {
var amSnacks = EatingTimes.find({timeToEat: "amSnack"}, {sort: {dayOfTheWeek: 1}}).fetch();
var daysOfWeek = ["mon", "tue", "wed", "thu", "fri"];
var NA = {onTheMenu: "N/A"};
var eatingTimes = [];
_.each(daysOfWeek, function(day){
_.each(amSnacks, function(amSnack){
if (amSnack.dayOfTheWeek === day) {
eatingTimes.push(amSnack);
} else {
eatingTimes.push(NA);
}
});
});
// console.log(eatingTimes);
return eatingTimes;
}
eatingTimes: [
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
_id: "xTziTnHYmgh5obYDB"
dayOfTheWeek: "tue"
onTheMenu: "apples"
timeToEat: "amSnack"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
_id: "yebkabPurnyQjqb5u"
dayOfTheWeek: "fri"
onTheMenu: "cereal"
timeToEat: "amSnack"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
]
amSnacks: function() {
var amSnacks = EatingTimes.find({timeToEat: "amSnack"}, {sort: {dayOfTheWeek: 1}}).fetch();
var daysOfWeek = ["0", "1", "2", "3", "4"];
var eatingTimes = [];
var i, j;
for(i = 0; i < daysOfWeek.length; i++) {
for(j = 0; j < amSnacks.length; j++) {
if (daysOfWeek[i] === amSnacks[j].dayOfTheWeek)
eatingTimes.push(amSnacks[j]);
}
var amSnacksArrayFromDb = [];
_.map(eatingTimes, function(amSnack) {
amSnacksArrayFromDb.push(amSnack.dayOfTheWeek);
});
var missingDaysOfWeek = _.difference(daysOfWeek, amSnacksArrayFromDb);
var missingDaysNA = [];
_.map(missingDaysOfWeek, function(day) {
var NA = { dayOfTheWeek: day, onTheMenu: "N/A"};
missingDaysNA.push(NA);
});
var eatingTimesArray = eatingTimes.concat(missingDaysNA);
var finalAMSnackTimes =
_.sortBy(eatingTimesArray, function(amSnack){
return amSnack.dayOfTheWeek;
});
}
return finalAMSnackTimes;
},
在mongoDB中查找AMN的JS方法:
{ "timeToEat" : "amSnack",
"dayOfTheWeek" : "tue",
"onTheMenu" : "apples",
"_id" : "xTziTnHYmgh5obYDB" }
amSnacks: function() {
var amSnacks = EatingTimes.find({timeToEat: "amSnack"}, {sort: {dayOfTheWeek: 1}}).fetch();
var daysOfWeek = ["mon", "tue", "wed", "thu", "fri"];
var NA = {onTheMenu: "N/A"};
var eatingTimes = [];
_.each(daysOfWeek, function(day){
_.each(amSnacks, function(amSnack){
if (amSnack.dayOfTheWeek === day) {
eatingTimes.push(amSnack);
} else {
eatingTimes.push(NA);
}
});
});
// console.log(eatingTimes);
return eatingTimes;
}
eatingTimes: [
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
_id: "xTziTnHYmgh5obYDB"
dayOfTheWeek: "tue"
onTheMenu: "apples"
timeToEat: "amSnack"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
_id: "yebkabPurnyQjqb5u"
dayOfTheWeek: "fri"
onTheMenu: "cereal"
timeToEat: "amSnack"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
]
amSnacks: function() {
var amSnacks = EatingTimes.find({timeToEat: "amSnack"}, {sort: {dayOfTheWeek: 1}}).fetch();
var daysOfWeek = ["0", "1", "2", "3", "4"];
var eatingTimes = [];
var i, j;
for(i = 0; i < daysOfWeek.length; i++) {
for(j = 0; j < amSnacks.length; j++) {
if (daysOfWeek[i] === amSnacks[j].dayOfTheWeek)
eatingTimes.push(amSnacks[j]);
}
var amSnacksArrayFromDb = [];
_.map(eatingTimes, function(amSnack) {
amSnacksArrayFromDb.push(amSnack.dayOfTheWeek);
});
var missingDaysOfWeek = _.difference(daysOfWeek, amSnacksArrayFromDb);
var missingDaysNA = [];
_.map(missingDaysOfWeek, function(day) {
var NA = { dayOfTheWeek: day, onTheMenu: "N/A"};
missingDaysNA.push(NA);
});
var eatingTimesArray = eatingTimes.concat(missingDaysNA);
var finalAMSnackTimes =
_.sortBy(eatingTimesArray, function(amSnack){
return amSnack.dayOfTheWeek;
});
}
return finalAMSnackTimes;
},
如果我添加另一条记录:
{ "timeToEat" : "amSnack",
"dayOfTheWeek" : "tue",
"onTheMenu" : "apples",
"_id" : "xTziTnHYmgh5obYDB" }
amSnacks: function() {
var amSnacks = EatingTimes.find({timeToEat: "amSnack"}, {sort: {dayOfTheWeek: 1}}).fetch();
var daysOfWeek = ["mon", "tue", "wed", "thu", "fri"];
var NA = {onTheMenu: "N/A"};
var eatingTimes = [];
_.each(daysOfWeek, function(day){
_.each(amSnacks, function(amSnack){
if (amSnack.dayOfTheWeek === day) {
eatingTimes.push(amSnack);
} else {
eatingTimes.push(NA);
}
});
});
// console.log(eatingTimes);
return eatingTimes;
}
eatingTimes: [
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
_id: "xTziTnHYmgh5obYDB"
dayOfTheWeek: "tue"
onTheMenu: "apples"
timeToEat: "amSnack"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
_id: "yebkabPurnyQjqb5u"
dayOfTheWeek: "fri"
onTheMenu: "cereal"
timeToEat: "amSnack"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
]
amSnacks: function() {
var amSnacks = EatingTimes.find({timeToEat: "amSnack"}, {sort: {dayOfTheWeek: 1}}).fetch();
var daysOfWeek = ["0", "1", "2", "3", "4"];
var eatingTimes = [];
var i, j;
for(i = 0; i < daysOfWeek.length; i++) {
for(j = 0; j < amSnacks.length; j++) {
if (daysOfWeek[i] === amSnacks[j].dayOfTheWeek)
eatingTimes.push(amSnacks[j]);
}
var amSnacksArrayFromDb = [];
_.map(eatingTimes, function(amSnack) {
amSnacksArrayFromDb.push(amSnack.dayOfTheWeek);
});
var missingDaysOfWeek = _.difference(daysOfWeek, amSnacksArrayFromDb);
var missingDaysNA = [];
_.map(missingDaysOfWeek, function(day) {
var NA = { dayOfTheWeek: day, onTheMenu: "N/A"};
missingDaysNA.push(NA);
});
var eatingTimesArray = eatingTimes.concat(missingDaysNA);
var finalAMSnackTimes =
_.sortBy(eatingTimesArray, function(amSnack){
return amSnack.dayOfTheWeek;
});
}
return finalAMSnackTimes;
},
{“timeToEat”:“amSnack”,
“星期二”:“星期二”,
“onTheMenu”:“苹果”,
“_id”:“xTziTnHYmgh5obYDB”}
{“timeToEat”:“amSnack”,
“星期五”:“星期五”,
“onTheMenu”:“谷物”,
“_id”:“yebkabPurnyQjqb5u”}
console.log(eatingTimes):
{ "timeToEat" : "amSnack",
"dayOfTheWeek" : "tue",
"onTheMenu" : "apples",
"_id" : "xTziTnHYmgh5obYDB" }
amSnacks: function() {
var amSnacks = EatingTimes.find({timeToEat: "amSnack"}, {sort: {dayOfTheWeek: 1}}).fetch();
var daysOfWeek = ["mon", "tue", "wed", "thu", "fri"];
var NA = {onTheMenu: "N/A"};
var eatingTimes = [];
_.each(daysOfWeek, function(day){
_.each(amSnacks, function(amSnack){
if (amSnack.dayOfTheWeek === day) {
eatingTimes.push(amSnack);
} else {
eatingTimes.push(NA);
}
});
});
// console.log(eatingTimes);
return eatingTimes;
}
eatingTimes: [
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
_id: "xTziTnHYmgh5obYDB"
dayOfTheWeek: "tue"
onTheMenu: "apples"
timeToEat: "amSnack"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
_id: "yebkabPurnyQjqb5u"
dayOfTheWeek: "fri"
onTheMenu: "cereal"
timeToEat: "amSnack"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
]
amSnacks: function() {
var amSnacks = EatingTimes.find({timeToEat: "amSnack"}, {sort: {dayOfTheWeek: 1}}).fetch();
var daysOfWeek = ["0", "1", "2", "3", "4"];
var eatingTimes = [];
var i, j;
for(i = 0; i < daysOfWeek.length; i++) {
for(j = 0; j < amSnacks.length; j++) {
if (daysOfWeek[i] === amSnacks[j].dayOfTheWeek)
eatingTimes.push(amSnacks[j]);
}
var amSnacksArrayFromDb = [];
_.map(eatingTimes, function(amSnack) {
amSnacksArrayFromDb.push(amSnack.dayOfTheWeek);
});
var missingDaysOfWeek = _.difference(daysOfWeek, amSnacksArrayFromDb);
var missingDaysNA = [];
_.map(missingDaysOfWeek, function(day) {
var NA = { dayOfTheWeek: day, onTheMenu: "N/A"};
missingDaysNA.push(NA);
});
var eatingTimesArray = eatingTimes.concat(missingDaysNA);
var finalAMSnackTimes =
_.sortBy(eatingTimesArray, function(amSnack){
return amSnack.dayOfTheWeek;
});
}
return finalAMSnackTimes;
},
您可以看到,如果有多条记录,则格式设置将全部关闭。如果在星期一有匹配项,我如何返回一个数组,只将正确的零食放在正确的位置,如果没有匹配项,则为该特定工作日推送NA而不创建太多NA条目?工作解决方案:
{ "timeToEat" : "amSnack",
"dayOfTheWeek" : "tue",
"onTheMenu" : "apples",
"_id" : "xTziTnHYmgh5obYDB" }
amSnacks: function() {
var amSnacks = EatingTimes.find({timeToEat: "amSnack"}, {sort: {dayOfTheWeek: 1}}).fetch();
var daysOfWeek = ["mon", "tue", "wed", "thu", "fri"];
var NA = {onTheMenu: "N/A"};
var eatingTimes = [];
_.each(daysOfWeek, function(day){
_.each(amSnacks, function(amSnack){
if (amSnack.dayOfTheWeek === day) {
eatingTimes.push(amSnack);
} else {
eatingTimes.push(NA);
}
});
});
// console.log(eatingTimes);
return eatingTimes;
}
eatingTimes: [
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
_id: "xTziTnHYmgh5obYDB"
dayOfTheWeek: "tue"
onTheMenu: "apples"
timeToEat: "amSnack"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
,
Object
_id: "yebkabPurnyQjqb5u"
dayOfTheWeek: "fri"
onTheMenu: "cereal"
timeToEat: "amSnack"
__proto__: Object
,
Object
onTheMenu: "N/A"
__proto__: Object
]
amSnacks: function() {
var amSnacks = EatingTimes.find({timeToEat: "amSnack"}, {sort: {dayOfTheWeek: 1}}).fetch();
var daysOfWeek = ["0", "1", "2", "3", "4"];
var eatingTimes = [];
var i, j;
for(i = 0; i < daysOfWeek.length; i++) {
for(j = 0; j < amSnacks.length; j++) {
if (daysOfWeek[i] === amSnacks[j].dayOfTheWeek)
eatingTimes.push(amSnacks[j]);
}
var amSnacksArrayFromDb = [];
_.map(eatingTimes, function(amSnack) {
amSnacksArrayFromDb.push(amSnack.dayOfTheWeek);
});
var missingDaysOfWeek = _.difference(daysOfWeek, amSnacksArrayFromDb);
var missingDaysNA = [];
_.map(missingDaysOfWeek, function(day) {
var NA = { dayOfTheWeek: day, onTheMenu: "N/A"};
missingDaysNA.push(NA);
});
var eatingTimesArray = eatingTimes.concat(missingDaysNA);
var finalAMSnackTimes =
_.sortBy(eatingTimesArray, function(amSnack){
return amSnack.dayOfTheWeek;
});
}
return finalAMSnackTimes;
},
amf:function(){
var amsnakts=EatingTimes.find({timeToEat:“amsnakt”},{sort:{dayofweek:1}}).fetch();
var daysOfWeek=[“0”、“1”、“2”、“3”、“4”];
var eatingTimes=[];
varⅠ,j;
对于(i=0;i
db记录看起来像:“{”timeToEat:“amSnack”,“dayofweek:“0”,“onTheMenu:“apples”,“u id:“xTziTnHYmgh5obYDB”}”