2017-02-09 77 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