簡體   English   中英

遍歷動態對象-jQuery

[英]Loop through dynamic object - Jquery

我知道這很容易做到,但我無法弄清楚。 我有一個由SPARQL查詢生成的動態對象。 它返回JSON,如下所示:

data = {
    "p": { "type": "uri" , "value": "http://www.company.com/PDE/SpecGuide#MatrixColumn" } ,
    "o": { "type": "literal" , "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "value": "1" } ,
    "obj": { "type": "uri" , "value": "http://www.company.com/PDE/SpecGuide#airtouch" } ,
    "lbl": { "type": "literal" , "value": "Airtouch" }
  } ,
  {
    "p": { "type": "uri" , "value": "http://www.company.com/PDE/SpecGuide#MatrixRow" } ,
    "o": { "type": "literal" , "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "value": "1" } ,
    "obj": { "type": "literal" , "value": "Smooth_Paint" } ,
    "hdr": { "type": "literal" , "datatype": "http://www.w3.org/2001/XMLSchema#boolean" , "value": "true" }
  } 

我唯一關心的是鍵和value['value']因此我需要過濾掉其余的內容。 最終,我正在尋找:

data = [
{1: {p: "http://www.company.com/PDE/SpecGuide#MatrixColumn",
     o: "1", 
     obj : "Smooth_Paint"} ,
{2 : {p: "http://www.company.com/PDE/SpecGuide#MatrixColumn",
     o: "1", 
     obj : "other_values"}
     otherKey: "more_values}
]

這讓我發瘋,因為我知道這並不是特別困難,但是我無法弄清楚。 我嘗試了

$.each(data, function(key,valueObj){
   data.key = {key: valueObj.value};
   list.push(data)
});

但是我最終得到了這樣的變化:

{1:{key: "http://www.company.com/PDE/SpecGuide#MatrixColumn"}}
{2: {key: "1"}}
{3:{key: "http://www.company.com/PDE/SpecGuide#airtouch"}}
{4:{key: "Airtouch"}}

$.each()回調中的第一個變量始終是索引。

您可以使用for...in通過hasOwnProperty()獲取附加到對象本身的屬性。 查看更多

 var data = [{ "p": { "type": "uri" , "value": "http://www.company.com/PDE/SpecGuide#MatrixColumn" } , "o": { "type": "literal" , "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "value": "1" } , "obj": { "type": "uri" , "value": "http://www.company.com/PDE/SpecGuide#airtouch" } , "lbl": { "type": "literal" , "value": "Airtouch" } } , { "p": { "type": "uri" , "value": "http://www.company.com/PDE/SpecGuide#MatrixRow" } , "o": { "type": "literal" , "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "value": "1" } , "obj": { "type": "literal" , "value": "Smooth_Paint" } , "hdr": { "type": "literal" , "datatype": "http://www.w3.org/2001/XMLSchema#boolean" , "value": "true" } }] var list = []; $.each(data, function(index, obj){ var newData = {} for(key in obj){ if(obj.hasOwnProperty(key)) { newData[key] = obj[key]['value'] } } var data = {} data[list.length+1] = newData list.push(data) }) console.log(list) 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM