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

Need help regarding building logic, adding properties to object

本文关键字:对象 添加 属性 帮助 构建      更新时间:2023-09-26

我有一个图像数组,其中有许多图像。不固定,可以是一个、两个或八个。当我有固定数量的图像时,我使用的代码类似于

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

但现在我有了阵列中的图像。我希望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) : {..}

我该怎么做?

感谢

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

obj.property

相当于

obj["property"]

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

details["image"+index]

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

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