使用字符串数组循环对象

Looping an object with an string array

本文关键字:循环 对象 数组 字符串      更新时间:2023-09-26

我对jQuery很陌生,不明白为什么这个循环不显示对象属性。

如果你能帮助我,我将不胜感激。

var shop_array = ["title","price","img","text"];
var submit = $(".add").find(":submit");
submit.on("click",function(e){
    var elements = $(".add").children(':input');
    for(var i=0;i<elements.length;i++){
        if($(elements[i]).val()!==""){
            var object = ''"'+shop_array[i]+''"';
            console.log(shopcart.shop_values[object])//dosen't display shop_value;
            console.log(object);
        }
    }
});
var shopcart= {
    shop_values :{
        "title":"a",
        "price":"b",
        "img":"img",
        "text":"text"
    },
    add: function(){
    }
}

您的问题是您在要用于访问对象属性的变量周围放置的",它们不应该在那里,因为它们不在属性名称中

var object = ''"'+shop_array[i]+''"';
console.log(shopcart.shop_values[object])//dosen't display shop_value;

应该只是

console.log(shopcart.shop_values[shop_array[i]])//dosen't display shop_value;

要使当前代码工作,shopcart需要定义为

var shopcart= {
    shop_values :{
        "'"title'"":"a",
        "'"price'"":"b",
        "'"img'"":"img",
        "'"text'"":"text"
    },
    add: function(){
    }
}

这看起来会很糟糕。