我在json
中有一组数组如下:
{"status":200,"success":true,"result":
[{"id":"0","NameInData":"","name":"","type":"mf","greeting":"Bonjour","message":"GENERIC: Lorem ipsum."},
{"id":"1","NameInData":"alexis","name":"Alexis","type":"mf","greeting":"Bonjour Alexis","message":"ONE: Lorem ipsum."},
{"id":"2","NameInData":"laurence","name":"Laurence","type":"ff","greeting":"Hello Laurence","message":"TWO: Lorem ipsum."},
{"id":"3","NameInData":"francois","name":"Francois","type":"mm","greeting":"Konnichiwa Francois","message":"THREE: Lorem ipsum."},
{"id":"4","NameInData":"dirk","name":"Dirk","type":"mf","greeting":"Ni hao Dirk","message":"FOUR: Lorem ipsum."},
{"id":"5","NameInData":"coline","name":"Coline","type":"ff","greeting":"high 5! Coline","message":"FIVE: Lorem ipsum."}]}
我能够从这个数组中识别一个键的值,并使用以下代码识别//do something
:
$.each(json.result, function(){
if (this.name == content){
//do something
var identifiedID = this.id;
console.log("PRINT ID: " + identifiedID);
var name = json.result[identifiedID].name;
var $nameText = $("#nameText"),
str = name;
html = $.parseHTML(str),
nodeNames = [];
$nameText.append(html);
console.log("Name: " + name);
} else {
var identifiedID = 0;
console.log("PRINT ID: " + identifiedID);
var name = content;
var $nameText = $("#nameText"),
str = name;
html = $.parseHTML(str),
nodeNames = [];
$nameText.append(html);
console.log("Name: " + name);
});
如果使用以下代码在列表中未标识//do other things
,我正在尝试name
。但是,由于我的数组有6个项目,输出将重复整个过程6次,其中我只需要一个输出,一个结果(或者,一个名称及其ID已被识别并打印它与OR相关的内容name尚未被识别,id将被设置为0并打印它的相关内容。)
您可以在链接here中找到我的完整代码。 如果有人能告诉我我的语法哪部分是错的,那将是非常好的吗?
答案 0 :(得分:1)
您可以使用Array.prototype.find
查找匹配条件的第一个元素(即name == content
),如果没有找到,则默认为json.result
的第一个元素(假设为json.result[0]
}始终是默认情况。)
var item = json.result.find(function(e) {
return e.name == content;
}) || json.result[0];
console.log("PRINT ID: " + item.id);
var name = item.name || content;
var $nameText = $("#nameText"),
str = name;
html = $.parseHTML(str),
nodeNames = [];
$nameText.append(html);
console.log("Name: " + name);
请注意,此代码假设name != ""
为您要查找的非默认项目。
我不确定您使用nodeNames
做了什么,但如果您只是尝试将#nameText
的文字设置为名称,则只需使用$('#nameText').text(name);
< / p>
答案 1 :(得分:1)
一旦满足条件,你就可以退出if语句中的每个函数。
return false;
答案 2 :(得分:1)
在JSFiddle代码中,您应该使用$ .grep()而不是$ .each()来过滤掉符合条件的项目,即名称。 $ .grep()返回匹配元素的数组。因此,您可以检查数组的长度是否大于0.如果是,则找到匹配项。如果没有,则没有匹配的元素。
答案 3 :(得分:0)
回答这个问题我会说语法看起来正确......