Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将json对象从变量解析为key=class的类_Javascript_Jquery_Arrays_Json_Variables - Fatal编程技术网

Javascript 将json对象从变量解析为key=class的类

Javascript 将json对象从变量解析为key=class的类,javascript,jquery,arrays,json,variables,Javascript,Jquery,Arrays,Json,Variables,我试图从each()对象中的变量解析json对象 例如,我有一个长数组: {castle: "0", commercial: "3", common: "0", cultural: "2", dioni: "0", holidays: "0", island: "2", nereides: "2", others: "0", peninsula: "0", thetis: "0"} 我有div,它的类和数组中的键相同。例如: <div class="castle"></div

我试图从each()对象中的变量解析json对象

例如,我有一个长数组:

{castle: "0", commercial: "3", common: "0", cultural: "2", dioni: "0", holidays: "0", island: "2", nereides: "2", others: "0", peninsula: "0", thetis: "0"}
我有div,它的类和数组中的键相同。例如:

<div class="castle"></div>
<div class="commercial"></div>
<div class="common"></div>
<div class="cultural"></div>
在本例中,数组中不存在array.a,因此我无法解析每个类的每个键的值


我该怎么解决这个问题呢?

你为什么不换一种方式呢?在中为..使用
循环(本身)对象并设置它:

for (var key in obj) {
    $("div." + key).text(obj[key]);
}
该循环中的选择器将找到
div
,该div带有与
相等的类,并将相应的值附加到该类中

演示:

但是,考虑到你的复杂性,我同意你的方法是最简单的。只需将
array.a
更改为
array[a]
。这就是你所需要的

试试这个:

$(document).ready(function () {
    $("body div").each(function () {
        var myarray = {
            castle: "0",
            commercial: "3",
            common: "0",
            cultural: "2",
            dioni: "0",
            holidays: "0",
            island: "2",
            nereides: "2",
            others: "0",
            peninsula: "0",
            thetis: "0"
        }; // the reall long array;

        var a = $(this).attr("class").split(' ')[0]; // in case there are two divs, split
        $("." + a).html(myarray[a] + " hours"); // array.a doesn't work
    });
});  

使用数组[a]而不是数组。a

var obj = {castle: "0", commercial: "3", common: "0", cultural: "2", dioni: "0", holidays: "0", island: "2", nereides: "2", others: "0", peninsula: "0", thetis: "0"}

$("body div").each(function(){
   var array = [] // the reall long array;

   var a = $(this).attr("class").split(' ')[0]; // in case there are two divs, split

   $("." + a).text(obj[a] + " hours"); // array.a doesn't work

});

工作演示:

@KhanhTO数组[“a”]无法工作。我试图解析变量a。不是目标a@Quentin不重复。变量
a
是包含类名的字符串。它不是任何形式的序列化数据。这不是你能解析的东西。你在问题中的代码使它看起来非常像你试图做的与重复问题完全相同的事情。你不能解析字符串吗?它完全相同。在变量
a
中有属性名称,因此必须使用
obj[a]
访问属性值
obj['a']
将尝试访问名为
a
的属性,这当然是错误的。这将是我的实际代码:我不确定for..in是否有效,因为不是数组中的所有对象都有一个包含现有类的div,也不是所有div都需要内容。我的问题是这里的总结:
var json=json.parse(req.responseText)。尝试在其上执行console.log()。它返回什么?我发布的非常长的数组,还有更多。img输入
var obj = {castle: "0", commercial: "3", common: "0", cultural: "2", dioni: "0", holidays: "0", island: "2", nereides: "2", others: "0", peninsula: "0", thetis: "0"}

$("body div").each(function(){
   var array = [] // the reall long array;

   var a = $(this).attr("class").split(' ')[0]; // in case there are two divs, split

   $("." + a).text(obj[a] + " hours"); // array.a doesn't work

});