从javascript里面的JSON变量中获取值

时间:2013-12-22 23:22:48

标签: javascript

如何从动态创建的JSON元素中获取值。以下示例。我想知道是否有办法使用一些javascript从前一个元素'top'获取值。 (如果标题不正确或具有误导性,请更新标题)

Following this example on jsfiddle

var info = [
{
  src: "http://dummyimage.com/55x80/0d0.png/fff",
  pos: {
    top: 93,
    left: 70
  },
  rotate: -10,
  zIndex: 3
},
{
  src: "http://dummyimage.com/55x80/d00.png/fff",
  pos: {
    top: previousElement(top) + some dynamic value added at run time,
    left: 70
  },
  rotate: 0,
 zIndex: 2
},
]

5 个答案:

答案 0 :(得分:1)

  

我想知道是否有办法使用一些javascript

从前一个元素'top'获取值

info是一个数组,所以你需要做的就是索引它然后访问prop对象,即

var prevTop = info[someIndex].pos.top;

答案 1 :(得分:1)

没有简单的语法可以从Javascript中的数组文字中获取前一个元素的值。你必须通过索引来引用它,如下所示:

pos: {
  top: info[0].pos.top + value
  left: 70
},

答案 2 :(得分:1)

我不会这样做,你可以根据索引计算它。

但是......如果你坚持:

假设您的数组是JS文字(而不是JSON,这是不同的),您可以使用一个简单的计数器。

使用事实赋值返回指定的值(虽然这有点丑陋):

var top = 93;
var info = [
{
  src: "http://dummyimage.com/55x80/0d0.png/fff",
  pos: {
    top: top,
    left: 70
  },
  rotate: -10,
  zIndex: 3
},
{
  src: "http://dummyimage.com/55x80/d00.png/fff",
  pos: {
    top: top = top + (some dynamic value added at run time),
    left: 70
  },
  rotate: 0,
 zIndex: 2
}          //... keep doing top = top + sometDynamicValue on all elements
]

更孤立的例子可能是:

var c = 0,    
    arr = [
       {a:c = c + 5},
       {a:c = c + 5},
       {a:c = c + 5},
       {a:c = c + 5},
       {a:c = c + 5},
    ]

这会创建一个对象数组,其属性增加5 a

答案 3 :(得分:0)

尝试此功能:

function DoOffset(data, offset)
{
    for (var i = 1; i < data.length; i++)
    {
        data[i].pos.top = data[i - 1].pos.top + offset;
    }
}

答案 4 :(得分:0)

您可以遍历info数组以更改值:

for(var i = 1, len = info.length; i < len; i++) {
  info[i].pos.top = info[i - 1].pos.top + newValue;
}