我正在创建一个JSON对象,如下:
tags = {"jon":["beef","pork"],"jane":["chicken","lamb"]};
这段文本是使用php从一个数组中生成的:
$arr = array(
'jon' => array('beef', 'pork'),
'jane' => array('chicken', 'lamb')
);
$tags = json_encode($arr);
我希望检查某个东西是否在其中一个中。这些都似乎不起作用,但是像这样的东西
if('lamb' in tags.jane)) {
console.log('YES');
} else {
console.log('NO');
}
向控制台输出NO
if('foo' in tags.jane)) {
console.log('YES');
} else {
console.log('NO');
}
这段代码会在控制台打印出NO
因此,观察一下
typeof(tags.jane);
它显示它是一个"object"
,但
console.log(tags);
显示如下内容:
Object
jane: Array[2]
0: "chicken"
1: "lamb"
length: 2
__proto__: Array[0]
jon: Array[2]
0: "beef"
1: "pork"
length: 2
__proto__: Array[0]
__proto__: Object
所以我认为
tags.jane
可能是一个数组,尝试了一下。if($.inArray('lamb', tags.jane)) {
console.log('YES');
} else {
console.log('NO');
}
这段代码会在控制台输出YES,但是
if($.inArray('foo', tags.jane)) {
console.log('YES');
} else {
console.log('NO');
}
该代码同时向控制台输出YES。
我是否在错误地构建JSON对象?没有正确指定值吗?非常感谢任何建议。如果将其作为数组而不是对象更容易,我可以完全控制进行更改。只是有点困惑应该如何处理。
tags.jane.chicken
的行为,您需要将chicken
用作键,并选择true
(或另一个真值)作为值,并使用对象符号的{}
语法。{"jon":{"beef":true,"pork":true},"jane":{"chicken":true,"lamb":true}}
- user1106925