Javascript 仅打印JSON数组中的True元素

Javascript 仅打印JSON数组中的True元素,javascript,html,json,Javascript,Html,Json,使用java脚本,我需要根据JSON数组中属性的值向html页面中的列表添加属性。 数组的格式如下所示: " } 基本上我想打印所有=真的值, 我尝试使用if语句,如: if(yelp.attributes.Take-out==true) output.innerHTML+=“取出; 它不起作用取出不是有效的标识符,在这种情况下,您需要使用[]符号来访问属性 var yelp={“attributes”:{“Take out”:true,“Drive Thru”:false,“Good For

使用java脚本,我需要根据JSON数组中属性的值向html页面中的列表添加属性。 数组的格式如下所示: "

}

基本上我想打印所有=真的值, 我尝试使用if语句,如:
if(yelp.attributes.Take-out==true)
output.innerHTML+=“取出

它不起作用

取出
不是有效的标识符,在这种情况下,您需要使用
[]
符号来访问属性

var yelp={“attributes”:{“Take out”:true,“Drive Thru”:false,“Good For”:{“甜点”:false,“深夜”:true,“午餐”:true,“晚餐”:true,“早午餐”:true,“早餐”:true},“Caters”:false,“噪音级”:“平均”,“接受预订”:true,“递送”:false,“氛围”:{“浪漫”:true,“亲密”:false,“优雅”:false,“时髦”:true,“divey:false:touristy:false:trendy:true:upscale:false:休闲:true}“停车场”{“车库”:false,“街道”:true,“有效”;“停车场”;“停车场”;“停车场”;“贴身服务”;“电视”;“室外座位”;“服装”;“休闲”、“酒精”;“无”;“服务员服务”;“真的”;“接受信用卡”;“真的”;“适合儿童”;“适合团体”;“真的”价格范围:2},“类型”:“业务”}

console.log(yelp.attributes[“Take out”])
注意我假设您实际使用的是一个
yelp
对象数组,而不是单个
yelp
对象。如果是这种情况,请注意,我将
yelp
对象包装在括号中,使其成为一个数组

例如,当您的json属性名带有连字符或空格时,您不能像访问
yelp.attributes.Take
那样访问它们。您必须使用括号表示法,如so
yelp.attributes['Take']
,否则,JavaScript会将其转换为数学:
yelp.attributes.Take

如果没有,则直接访问属性,而不是尝试循环对象。(参见第二个示例)

您可以使用
Array.filter
查找您要查找的内容:

var yelp=[{
“属性”:{
“外卖”:没错,
“免下车”:错误,
“有益于”:{
“甜点”:错,
“深夜”:没错,
“午餐”:没错,
“晚餐”:没错,
“早午餐”:没错,
“早餐”:真的吗
},
“迎合”:假,
“噪声级”:“平均值”,
“接受保留”:没错,
“交付”:错误,
“氛围”:{
“浪漫”:真的,
“亲密”:假,
“优雅”:假,
“时髦人士”:没错,
“迪维”:错,
“旅游业”:假,
“时髦”:没错,
“高档”:假,
“随意”:真的吗
},
“停车场”:{
“车库”:错,
“街”:没错,
“已验证”:错误,
“很多”:没错,
“代客泊车”:假
},
“有电视”:没错,
“户外座位”:没错,
“服装”:“休闲装”,
“酒精”:“无”,
“服务员服务”:没错,
“接受信用卡”:正确,
“对孩子有好处”:没错,
“对团体有益”:没错,
“价格范围”:2
},
“类型”:“业务”
}];
const takeOuts=yelp.filter(y=>y.attributes['Take-out']==true);

console.log(takeOuts);
对象可能有很深的层次结构,因此在这种情况下递归看起来很有用

var yelp={
“属性”:{
“外卖”:没错,
“免下车”:错误,
“有益于”:{
“甜点”:错,
“深夜”:没错,
“午餐”:没错,
“晚餐”:没错,
“早午餐”:没错,
“早餐”:真的吗
},
“迎合”:假,
“噪声级”:“平均值”,
“接受保留”:没错,
“交付”:错误,
“氛围”:{
“浪漫”:真的,
“亲密”:假,
“优雅”:假,
“时髦人士”:没错,
“迪维”:错,
“旅游业”:假,
“时髦”:没错,
“高档”:假,
“随意”:真的吗
},
“停车场”:{
“车库”:错,
“街”:没错,
“已验证”:错误,
“很多”:没错,
“代客泊车”:假
},
“有电视”:没错,
“户外座位”:没错,
“服装”:“休闲装”,
“酒精”:“无”,
“服务员服务”:没错,
“接受信用卡”:正确,
“对孩子有好处”:没错,
“对团体有益”:没错,
“价格范围”:2
},
“类型”:“业务”
};
函数parseYelp(对象,前缀){
if(前缀)
前缀+=':';
其他的
前缀=“”;
for(obj中的var键){
if(类型(对象[键])==“对象”)
parseYelp(obj[key],前缀+key);
否则如果(obj[键]==真)
console.log(前缀+键);
}
}
parseYelp(yelp);
//或者只是属性
console.log('\n仅属性\n');
parseYelp(yelp.attributes);
var yelp= {
"attributes": {
    "Take-out": true,
    "Drive-Thru": false,
    "Good For": {
        "dessert": false,
        "latenight": true,
        "lunch": true,
        "dinner": true,
        "brunch": true,
        "breakfast": true
    },
    "Caters": false,
    "Noise Level": "average",
    "Takes Reservations": true,
    "Delivery": false,
    "Ambience": {
        "romantic": true,
        "intimate": false,
        "classy": false,
        "hipster": true,
        "divey": false,
        "touristy": false,
        "trendy": true,
        "upscale": false,
        "casual": true
    },
    "Parking": {
        "garage": false,
        "street": true,
        "validated": false,
        "lot": true,
        "valet": false
    },
    "Has TV": true,
    "Outdoor Seating": true,
    "Attire": "casual",
    "Alcohol": "none",
    "Waiter Service": true,
    "Accepts Credit Cards": true,
    "Good for Kids": true,
    "Good For Groups": true,
    "Price Range": 2
},
"type": "business"