在 jquery/underscore.js 的对象中访问对象

Accessing an object within an object for jquery/underscore.js

不敢相信事实证明这如此困难。

我有以下 JSON:

{"1440071374-Bane breathing.jpg":{"filename":"1440071374-Bane breathing.jpg","alt":"This is bane","primary":true,"caption":"This is Banecat, the worst enemy of 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 。可能是因为结果来自需要首先解析的请求?

您的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?添加以下代码,它应该可以工作。确保您有一个具有唯一 ID

<img> 元素

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

我也在上面fiddle中编辑了代码。