Javascript 仅打印JSON数组中的True元素
使用java脚本,我需要根据JSON数组中属性的值向html页面中的列表添加属性。 数组的格式如下所示: " } 基本上我想打印所有=真的值, 我尝试使用if语句,如: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
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
那样访问它们。您必须使用括号表示法,如soyelp.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"