需要有关构建逻辑的帮助,向对象添加属性

时间:2012-04-04 04:55:22

标签: javascript jquery

我有一个图像数组,其中有许多图像。不固定,可能是一个或两个或8.当我有固定数量的图像,然后我使用的代码是这样的

var details = {

    image1: {
        position: 0,
        title: $slideDiv.children().eq(0).attr("alt")
    },
    image2: {
        position: -400,
        title: $slideDiv.children().eq(1).attr("alt")
    },
    image3: {
        position: -800,
        title: $slideDiv.children().eq(2).attr("alt")
    },
    image4: {
        position: -1200,
        title: $slideDiv.children().eq(3).attr("alt")
    },
    image5: {
        position: -1600,
        title: $slideDiv.children().eq(4).attr("alt")
    }

}; //end of var details

但现在我有阵列中的图像。我希望细节对象添加的图像等于数组中的图像数量。我试过这样的事情

var details = {};
var position = 0;
images.each(function(index){
    details.("image" + index) : {
        position: position,
        title: $slideDiv.children().eq(index).attr("alt")
    }

    position += -400;

}) ; //end of .each()

我想要做的逻辑是,如果我在图像数组中有两个图像,它应该变成这样的东西

var details = {
    image1: {
        position: 0,
        title: $slideDiv.children().eq(1).attr("alt")
    },
    image2: {
        position: -400,
        title: $slideDiv.children().eq(2).attr("alt")
    }

}

但这不起作用。当然我的语法错了

details.("image" + index) : {..}

我该怎么做?

由于

2 个答案:

答案 0 :(得分:1)

在Javascript中,您可以通过以下两种方式访问​​属性:

obj.property

相当于

obj["property"]

所以在你的情况下,你会想这样写:

details["image"+index]

答案 1 :(得分:0)

正确的语法是:details['image' + index]以后可以通过details.image0details.image1等进行访问。

所以它应该是:details['image' + index] = {prop: val}