Javascript jquery每次迭代复杂的JSON结构时使用;where子句;
我不完全清楚如何构造Javascript jquery每次迭代复杂的JSON结构时使用;where子句;,javascript,jquery,json,each,Javascript,Jquery,Json,Each,我不完全清楚如何构造$.each()函数 以下JSON数据块在数组ItemValues中包含多个项。我要寻找的是一种方法(因为这个数据包可以任意大),即获取每个ItemValue数组项,其中Fields.Id相当于某个值“x” 还有,是否有某种方法可以将ItemValues[n].Fields.units作为数组检索 JSON: 假设您的json显示在变量json中,那么对于这个确切的场景,您可以使用: function validItems(id,json){ var validItemVa
$.each()
函数
以下JSON数据块在数组ItemValues
中包含多个项。我要寻找的是一种方法(因为这个数据包可以任意大),即获取每个ItemValue
数组项,其中Fields.Id
相当于某个值“x”
还有,是否有某种方法可以将ItemValues[n].Fields.units
作为数组检索
JSON:
假设您的json显示在变量
json
中,那么对于这个确切的场景,您可以使用:
function validItems(id,json){
var validItemValues = [];
var values = json.ItemValues;
for(var value in values){
if( !values.hasOwnProperty(value) )continue;
var itemValue = values[value];
if( itemValue.Fields.id == id ){
validItemValues.push(itemValue);
}
}
return validItemValues;
}
使用jQuery的执行相同的方法。每个:
function validItems(id,json){
var validItemValues = [];
$.each(json.ItemValues,function(){
if(this.Fields.id == id)validItemValues.push(this);
});
return validItemValues;
}
有关查找json值的递归方法,请参见以下答案:
一旦获得了有效项,就可以遍历它们,然后使用split将units字符串转换为数组
var validItemList = validItems(id,json);
for( var item in validItemList ){
if( !validItemList .hasOwnProperty(item ) )continue;
var currentItem = validItemList[item];
var fieldsUnitArray = currentItem.Fields.units.split(" ");
//work with array of units
}
下面是一段代码,它显示了所有内容(根据需要使用$.each()
),使用和
,玩它
注意:当然还有一些更好的解决方案。您可能想了解一下如何处理嵌套数据结构。然后您可以切换到$。如果您愿意,每个。@FelixKling谢谢Felix,我知道如何以这种方式遍历数据,我特别寻找$。每种方式都是因为我不想在结构上多次循环检查特定字段的等效性。$。每种
都只是
循环中的
和
的替代品。它不做任何循环不能做的事情。例如,$。每个(d,函数(k,v){}
与(var k=0;k
或(var k in d){var v=d[k];}相同。如果您知道如何在没有$的情况下进行此操作。每个$都知道如何使用$进行此操作。每个。使用linqjs它将赢得游戏@费利克斯克林:我不知道你在评论中说了什么,但我重新读了一遍,我的大脑中突然出现了一些东西,现在一切都清楚了。有时候,我想踢自己。如果我在第一次回复中显得忘恩负义,那就表示感谢和抱歉!
var validItemList = validItems(id,json);
for( var item in validItemList ){
if( !validItemList .hasOwnProperty(item ) )continue;
var currentItem = validItemList[item];
var fieldsUnitArray = currentItem.Fields.units.split(" ");
//work with array of units
}
var json_string = "Your JSON here";
//Use JSON.parse to make it an object
var json_object = JSON.parse(json_string.innerHTML);
//Will store the matched identifier
var matched_id;
//Will store the matched array
var matched_array;
//A valid test case, with units not null
var x = 13288263;
$.each(json_object.ItemValues, function(key, item_value){
if(item_value.Fields.id == x){
matched_id = item_value.Fields.id;
//Second part of the question
var units = item_value.Fields.units;
if(units != ""){
//String.split() returns an array, by splitting the string with
//selected string
matched_array = units.split(', ');
}
}
});