访问对象中的对象以获取jquery / underscore.js

时间:2015-08-28 16:27:06

标签: javascript jquery json underscore.js

无法相信这已经证明是如此困难。

我有以下JSON:

  

{" 1440071374-Bane breathing.jpg":{" filename":" 1440071374-Bane   呼吸。#"," alt":"这是祸害","主要":true,"标题":&#34 ;这是   Banecat,Batcat的最大敌人"}}

我已将其转换为具有以下下划线语法的对象:

    _.each(results, function(r) {

          var obj = JSON.parse(r.images)

伪我想做的事情如下:

if primary exists and is true {

   var img = filename

我认为这只是obj [0] .filename的一个显而易见的工作,但显然不是,而且我已经暂时停留了一段时间。

非常感谢任何帮助。

周末之后我又回到了这个问题,我注意到JSON没有被视为对象:

<%
_.each(results, function(r) {

    var a = r.images;
    _.isObject(a); // strangely now resulting in false????
    _.isString(a); // true

当我使用下划线语法<%= r.images %>将JSON回显到页面上时,我将json粘贴在此问题的顶部。也许是因为结果来自请求需要先解析?

1 个答案:

答案 0 :(得分:2)

您的JSON已经是一个对象(字典)。您需要做的只是迭代并验证primary是否为true,如果是,请将filename值分配给var img

var a = {"1440071374-Bane breathing.jpg":{"filename":"1440071374-Bane breathing.jpg","alt":"This is bane","primary":true,"caption":"This is Banecat, the worst enemy of Batcat"}};

for (items in a) {
  if (a[items]['primary'] == true) {
     var img = a[items]['filename'];
    alert(img);     // <-- will display 1440071374-Bane breathing.jpg in this example
 }
}

JSFiddle中的相同代码。玩弄不同的价值观。

为什么不动态添加src?添加以下代码,它应该工作。确保您的<img>元素具有唯一ID

document.getElementById('imgId').src = "example.com/" + img;

我也在上面编写了同样的代码。