如果名称等于测试,是否可以打印罐头,瓶子和喷泉
任何人都可以帮助在if块中添加条件以匹配条件吗?
$.each(value, function (i, v) {
if(i.name=="Test")
{
}
});
来自以下JSON格式
[
{
"id": "0004",
"name": "Test",
"image": {
"url": "images/0001.jpg",
"width": 200,
"height": 200
},
"Can": [
"250ml",
"300ml",
"330ml",
{
"image": "images/0001.jpg"
}
],
"Bottle": [
"350ml",
"600ml",
{
"image": "images/0001.jpg"
}
],
"Fountain": [
"small",
"large",
{
"image": "images/0001.jpg"
}
]
}
]
答案 0 :(得分:0)
您的JSON结构也是一个javascript对象。 您的对象有6个属性:“id”,“name”,“image”,“Can”,“Bottle”,“Fountain”。
您需要的是使用javascript内省并循环访问对象的属性,请参阅以下stackoverflow问题:
How to do JavaScript object introspection?
$(json).each(function() {
if (this.name === "Test"){
for(var propName in this) {
if(typeof(obj[propName]) != "undefined") {
console.log(propName);
}
}
}
});
答案 1 :(得分:0)
为了直接回答问题,这是jsFiddle的一个简单示例。
// jquery Example
$(json).each(function() {
if (this.name === "Test"){
console.log(this.Can);
console.log(this.Bottle);
console.log(this.Fountain);
$("#jQuery").append(JSON.stringify(this.Can)+"<br>");
$("#jQuery").append(JSON.stringify(this.Bottle)+"<br>");
$("#jQuery").append(JSON.stringify(this.Fountain)+"<br>");
};
});
// pure JS example
for (i = 0; i < json.length; i++ ) {
if (json[i].name === "Test"){
console.log(json[i].Can);
console.log(json[i].Bottle);
console.log(json[i].Fountain);
var out = document.getElementById("nojQueryResults");
out.innerHTML = out.innerHTML + JSON.stringify(json[i].Can)+"<br>";
out.innerHTML = out.innerHTML + JSON.stringify(json[i].Bottle)+"<br>";
out.innerHTML = out.innerHTML + JSON.stringify(json[i].Fountain)+"<br>";
};
};
// jquery Example iterate over all nodes when found
// json should be refactored to make an array in the found object
// that contains only what you want to extract here. Say maybe a type: key
// otherwise you'll get everything in this /flat/ node
$(json).each(function() {
if (this.name === "Test"){
$(this).each(function() {
console.log(this);
$("#IterateAllChildNodes").append(JSON.stringify(this)+"<br>");
})
}
});
// pure JS example iterate over all nodes when found
// json should be refactored to make an array in the found object
// that contains only what you want to extract here. Say maybe a type: key.
// otherwise you'll get everything in this /flat/ node
for (i = 0; i < json.length; i++ ) {
if (json[i].name === "Test"){
console.log(json[i]);
var out = document.getElementById("NoJqueryIterateAllChildNodes");
out.innerHTML = out.innerHTML + JSON.stringify(json[i])+"<br>";
};
};
编辑我已经通过更多示例扩展了jsFiddle。纯JS和2个迭代遍历找到的节点中的所有节点,因为在评论中提到这些可能不是您正在寻找的仅有的三个项目。你的json并没有形成特定&#34;类型&#34;在你自己的节点中,所以你将获得/ found / node中的所有内容,除非你提供额外的排除逻辑,如果有一个额外的键/值被添加到这个节点,你必须稍后更新你不想输出。考虑添加type
并将Can / Bottle / Fountain放入其中以进行迭代。