Javascript 循环遍历对象并显示Y所在的数据

Javascript 循环遍历对象并显示Y所在的数据,javascript,javascript-objects,Javascript,Javascript Objects,我有一个对象,它有一个名为response的属性,它包含一个带有Y和N的字符串。下一个属性是details,其顺序与响应相同,例如第一个Y与details.1相关,第二个N与details.2相关,等等。如何循环此对象并仅显示具有相应Y的细节的段落和图像 var options = { response: "YNY", details: { 1: { text: "This is the first option",

我有一个对象,它有一个名为response的属性,它包含一个带有Y和N的字符串。下一个属性是details,其顺序与响应相同,例如第一个Y与details.1相关,第二个N与details.2相关,等等。如何循环此对象并仅显示具有相应Y的细节的段落和图像

var options = {
    response: "YNY",
    details: {
        1: {
            text: "This is the first option",
            img: "http://www.placecage.com/200/300"
        },
        2: {
            text: "This is the second option",
            img: "http://www.placecage.com/200/300"
        },
        3: {
           text: "This is the third option",
           img: "http://www.placecage.com/200/300"
        }
    }
};

var resp = options.response.split("");
var options = options.details;

你就快到了<代码>拆分(“”)可以。您可以进一步循环此数组,并为要作为
选项添加到页面的HTML创建字符串值。详细信息[index+1]
,然后创建进入页面的
p
img
标记

var选项={
答复:“YNY”,
详情:{
1: {
文本:“这是第一个选项”,
img:“http://www.placecage.com/200/300"
},
2: {
文本:“这是第二个选项”,
img:“http://www.placecage.com/200/300"
},
3: {
文本:“这是第三个选项”,
img:“http://www.placecage.com/200/300"
}
}
};
var resp=options.response.split(“”);
var-nHTML='';
分别为forEach(函数(字符、索引){
如果(字符=='Y'){
nHTML+=''+选项。详细信息[索引+1]。文本+'

'; } }); document.getElementById('container').innerHTML=nHTML
您可以映射键,过滤零件数组并映射值

var options={response:“YNY”,详细信息:{1:{text:“这是第一个选项”,img:http://www.placecage.com/200/300},2:{text:“这是第二个选项”,img:http://www.placecage.com/200/300},3:{text:“这是第三个选项”,img:http://www.placecage.com/200/300" } } },
resp=options.response.split(“”),
详细信息=响应
.map((s,i)=>s=='Y'&&i+1)
.filter(布尔值)
.map(k=>options.details[k]);
控制台日志(详细信息)

.as控制台包装{max height:100%!important;top:0;}
循环响应字符串并检查它是否包含Y或N,如果是Y,则获取图像src和文本

var选项={
答复:“YNY”,
详情:{
1: {
文本:“这是第一个选项”,
img:“http://www.placecage.com/200/300"
},
2: {
文本:“这是第二个选项”,
img:“http://www.placecage.com/200/300"
},
3: {
文本:“这是第三个选项”,
img:“http://www.placecage.com/200/300"
}
}
};
var resp=选项。响应;
var options=options.details;
var-content=“”;

对于(var i=0;i您可以执行以下操作:

var选项={
答复:“YNY”,
详情:{
1: {
文本:“这是第一个选项”,
img:“http://www.placecage.com/200/300"
},
2: {
文本:“这是第二个选项”,
img:“http://www.placecage.com/200/300"
},
3: {
文本:“这是第三个选项”,
img:“http://www.placecage.com/200/300"
}
}
};
var resp=options.response.split(“”);
Object.values(options.details).forEach(function(item,i){
if(resp[i]=“Y”){
document.getElementById('container').innerHTML++=''+item.text++'
'+'; } });
您可以使用循环查看
选项。详细说明
对象值,并根据
选项中的相应字符对其进行过滤。使用响应

这是您的代码应该如何编写的:

var results = Object.values(options.details).filter(function(d, i) {
  return options.response.split("")[i] == "Y";
});
演示:

var选项={
答复:“YNY”,
详情:{
1: {
文本:“这是第一个选项”,
img:“http://www.placecage.com/200/300"
},
2: {
文本:“这是第二个选项”,
img:“http://www.placecage.com/200/300"
},
3: {
文本:“这是第三个选项”,
img:“http://www.placecage.com/200/300"
}
}
};
var results=Object.values(options.details).filter(函数(d,i){
返回options.response.split(“”[i]=“Y”;
});

console.log(results);
Object.keys(options.details).filter(u,i)=>options.response[i]==“Y”).map(key=>options.details[key])
@destoryer你能给我解释一下吗?e和i参数是什么?response[i]从响应字符串中提取单个字符?@KrishnaPrashatt
i
是数组的索引(在对象键上循环时),可用于访问。