Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.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 遍历表行,只选择特定的列名和值_Javascript_Json - Fatal编程技术网

Javascript 遍历表行,只选择特定的列名和值

Javascript 遍历表行,只选择特定的列名和值,javascript,json,Javascript,Json,我是个初学者,不知道如何从JSON获取数据。我有以下JSON结构 { "title": "Delicate style of embroidery lawn dress", "field": [ { "row1": { "key": "free_homedelivery", "value": "yes" } }, { "row2": { "key": "

我是个初学者,不知道如何从JSON获取数据。我有以下JSON结构

{
"title": "Delicate style of embroidery lawn dress",
"field": [
    {
        "row1": {
            "key": "free_homedelivery",
            "value": "yes"
        }
    },
    {
        "row2": {
            "key": "_price",
            "value": "60"
        }
    },
    {
        "row3": {
            "key": "_regular_price",
            "value": "60"
        }
    },
    {
        "row4": {
            "key": "_stock_status",
            "value": "instock"
        }
    }
         ]
}
我试过了,但控制台显示
undefined

for(var i =0 ;i < s.length; i++)
{
console.log('key ' + s.field['row'+i].key);
}
for(变量i=0;i
这似乎无法获取值


这里是

您在json中的对象都有点不同(属性名为row1、row2等),因此您必须执行以下操作:

var json = {
    "title": "Delicate style of embroidery lawn dress",
        "field": [{
        "row1": {
            "key": "free_homedelivery",
                "value": "yes"
        }
    }, {
        "row2": {
            "key": "_price",
                "value": "60"
        }
    }, {
        "row3": {
            "key": "_regular_price",
                "value": "60"
        }
    }, {
        "row4": {
            "key": "_stock_status",
                "value": "instock"
        }
    }]
}

for (i = 0; i < json.field.length ; i++){
    var item = json.field[i];    
    var key = item["row" + (i + 1)].key;
    alert(key);
}
var json={
“标题”:“精致风格的刺绣草坪裙”,
“字段”:[{
“第1行”:{
“密钥”:“免费送货上门”,
“值”:“是”
}
}, {
“第2行”:{
“密钥”:“价格”,
“值”:“60”
}
}, {
“第3行”:{
“键”:“正常价格”,
“值”:“60”
}
}, {
“第4行”:{
“密钥”:“库存状态”,
“值”:“instock”
}
}]
}
对于(i=0;i

问题

  • 什么是
    s
    ?-假设
    s
    是您粘贴的json
  • 迭代在
    s.field
    上,但使用
    s.length
  • 字段
    引用为数组,但尝试访问数组中对象的属性作为数组的属性
  • 数组迭代从
    0
    开始,而
    名称从
    行1开始
  • var numFields=s.field.length;//计算长度的良好实践
    对于(变量i=0;i
    脚注-JSON太复杂了,它可以像下面这样简单

    var s = {
        "title": "Delicate style of embroidery lawn dress",
        "field": [
            {
                "key": "free_homedelivery",
                "value": "yes"
            },
            {
                "key": "_price",
                "value": "60"
            }
        ]
    };
    // Updated loop
    var numFields = s.field.length; // Good practice to keep length calculated
    for(var i = 0; i < numFields; i++){
        console.log('key ' + s.field[i].key);
    }
    
    var s={
    “标题”:“精致风格的刺绣草坪裙”,
    “字段”:[
    {
    “密钥”:“免费送货上门”,
    “值”:“是”
    },
    {
    “密钥”:“价格”,
    “值”:“60”
    }
    ]
    };
    //更新循环
    var numFields=s.field.length;//计算长度的良好实践
    对于(变量i=0;i
    希望这有帮助


    小提琴-

    控制台不返回任何内容。请检查此处。您可能没有将JSON分配给
    var s
    ,这里是生成JSON的URL,我正在使用$.ajax({});为了获取JSONI,尝试了fiddle代码,但控制台仍然显示“UncaughtTypeError:无法读取undefined”的属性“key”,您需要将响应放入变量中,然后使用上面的循环。不管怎么说,你是在什么浏览器上试用的?看看小提琴,没有错误。您是否忘记声明变量(我将其命名为json)。您已将json直接存储在变量中。在我的帖子里查一查,你就会知道我的代码了。
    var s = {
        "title": "Delicate style of embroidery lawn dress",
        "field": [
            {
                "key": "free_homedelivery",
                "value": "yes"
            },
            {
                "key": "_price",
                "value": "60"
            }
        ]
    };
    // Updated loop
    var numFields = s.field.length; // Good practice to keep length calculated
    for(var i = 0; i < numFields; i++){
        console.log('key ' + s.field[i].key);
    }