2017-02-09 71 views
0

我JSON響應如下推鍵值爲JSON數組在Javascript

{ 
     "ProductDetails": [ 
      { 
       "id": "1234", 
       "description": "Testing Product1", 
       "name": "Product1", 
       "displayName": "Product1", 
       "favourite": true, 
       "iconURL": "testNadIconURL", 
       "productType": "Application" 
      }, 
      { 
       "id": "8754", 
       "name": "ProductFroGroup", 
       "displayName": "ProductFroGroup", 
       "favourite": false, 
       "productType": "Application" 
      }, 
      { 
       "id": "8546", 
       "applicationURL": "http://example.com", 
       "description": "Test description", 
       "name": "ASO", 
       "displayName": "Product3", 
       "favourite": false, 
       "iconURL": "http://example/ux/images/phone-icon.png", 
       "productType": "Application" 
      } 
     ] 
    } 

JS

$ctrl.appList = response.data.ProductDetails;      
    for (var i = 0; i <= $ctrl.appList.length; i++) { 
     if ($ctrl.appList[i].iconURL != undefined) { 
      var valid = /^(ftp|http|https):\/\/[^ "]+$/.test($ctrl.appList[i].iconURL); 
      if (valid) { 
       console.log("URL avaibale"); 
       } else { 
       $ctrl.appList[i].iconURL.push("http://example/ux/images/phone-icon.png"); 
       } 
     } else { 
      $ctrl.appList[i].iconURL.push("http://example/ux/images/phone-icon.png"); 
     } 
} 

我想

  1. 要設置如果iconURL爲空,則將iconURL設置爲默認的url值。
  2. 如果iconURL在響應中不可用,請將iconURL設置爲相同的默認網址。

我想推鍵和值對的每個對象的數組。

+1

好。你到目前爲止做了什麼來達到這個目標? – LionC

+0

此外,簡化問題中的代碼將使其更容易回答。 – eddyP23

+1

嘗試用'iconURL =「url」替換'iconURL.push(「url」)'' –

回答

1

您可以用這種方法解決它:

var regExp = /^(ftp|http|https):\/\/[^ "]+$/; 
var appList = response.data.ProductDetails; 
appList.forEach(function(app) { 
    var iconURL = app.iconURL || ""; 
    if (!iconURL || !regExp.test(iconURL)) { 
     app.iconURL = "http://example/ux/images/phone-icon.png"; 
    } 
}); 
$ctrl.appList = appList; 
+0

謝謝..它工作:) – Shareer