我正在尝试访问存储在each_question中的json对象数组内部的options Array,当我说each_question.text时它正在打印该数组中的文本,但是当我们说each_question.options时它应该打印options数组但显示为未定义
app.post('/Evaluate',(req,res,err) => {
if(req){
var answered_questions=req.body;
console.log(answered_questions)
}else
{
console.log(err)
}
quiz.find({},(err,data) => {
if(err){
console.log(err);
}
console.log(data);
var totalCorrect = 0;
for(each_question_index in data){
each_question = data[each_question_index]
for(each_answered_question_index in answered_questions){
each_answered_question = answered_questions[each_answered_question_index]
if(each_question._id === each_answered_question.Q_id){
// console.log('executing')
console.log(each_question);
console.log(each_question.options)
for(each_option_index in each_question.options){
each_option=each_question.options[each_option_index]
if(each_option.o_id === each_answered_question.opt_id){
if(each_option.is_correct === 1){
totalCorrect = totalCorrect + 1;
}
}
}
}
}
}
这是我的JSON数据
[{
_id: '5bbee515bb34b98be0464c76',
text: 'who is the latest version of Angular?',
options: [{
o_id: 151,
option: 'four',
is_correct: 0
}, {
o_id: 152,
option: 'five',
is_correct: 0
}, {
o_id: 153,
option: 'six',
is_correct: 1
}, {
o_id: 151,
option: 'seven',
is_correct: 0
}],
selected: ''
} {
_id: '5bbee759bb34b98be0464c77',
text: 'The 2019cricket world cup will be held in which country?',
options: [{
o_id: 161,
option: 'Australia',
is_correct: 0
}, {
o_id: 162,
option: 'India',
is_correct: 0
}, {
o_id: 163,
option: 'England',
is_correct: 1
}, {
o_id: 161,
option: 'Pakistan',
is_correct: 0
}],
selected: ''
} {
_id: '5bbee7dbbb34b98be0464c78',
text: 'who is the first player to score a double century in the circket?',
options: [{
o_id: 171,
option: 'Sachin tendulkar',
is_correct: 1
}, {
o_id: 172,
option: 'Rohitsharma',
is_correct: 0
}, {
o_id: 173,
option: 'chrisGyale',
is_correct: 0
}, {
o_id: 171,
option: 'ABDevilliers',
is_correct: 0
}],
selected: ''
}]
答案 0 :(得分:0)
使用Array.filter获取项目:
const arr = [{
o_id: 142,
option: 'billgates',
is_correct: 0
},
{
o_id: 143,
option: 'stevejobs',
is_correct: 0
},
{
_id: '5bbee515bb34b98be0464c76',
text: 'who is the latest version of Angular?',
options: [{
o_id: 151,
option: 'four',
is_correct: 0
},
{
o_id: 152,
option: 'five',
is_correct: 0
},
{
o_id: 153,
option: 'six',
is_correct: 1
},
{
o_id: 151,
option: 'seven',
is_correct: 0
}
],
selected: ''
}
];
let targetArr = arr.filter(item =>
item.hasOwnProperty('options') && Array.isArray(item.options));
console.log(targetArr);
答案 1 :(得分:0)
您可以在数据之类的数据上简单地使用.map或.forEach
使用.map
data.map((item, index) =< {
console.log("_id", item._id);
console.log("text", item.text);
console.log("options", item.options);//this will print options array
if(Array.isArray(item.options) && item.options.length > 0){
item.options.map((option, i) => { // here iterate options array and get values from objects
console.log("o_id", option.o_id);
console.log("option", option.option);
console.log("is_correct", option.is_correct);
}
}
}
使用.forEach
data.forEach((item, index) =< {
console.log("_id", item._id);
console.log("text", item.text);
console.log("options", item.options);
if(Array.isArray(item.options) && item.options.length > 0){
item.options.forEach((option, i) => {
console.log("o_id", option.o_id);
console.log("option", option.option);
console.log("is_correct", option.is_correct);
}
}
}