通过阵列及相关联的元件循环

时间:2019-02-02 19:07:53

标签: javascript jquery

我有以下JSON数据:

0:[{"LoggerId":"1000651443","ReadingDate":"2018-12-05 00:03:03, "ReadingValue":"12.6", "Tooltip":"Someinfo"},
{"LoggerId":"1000651447","ReadingDate":"2018-12-05 00:04:03, "ReadingValue":"12.7", "Tooltip":"Someinfo"}]

1:[{"LoggerId":"1000651444","ReadingDate":"2018-12-05 00:03:05, "ReadingValue":"12.9", "Tooltip":"Someinfo"},
 {"LoggerId":"1000651445","ReadingDate":"2018-12-05 00:03:07, "ReadingValue":"14.9", "Tooltip":"Someinfo"}]

2:[{"LoggerId":"1000651446","ReadingDate":"2018-12-05 00:03:17, "ReadingValue":"13.6", "Tooltip":"Someinfo"},
 {"LoggerId":"1000651446","ReadingDate":"2018-12-05 00:04:17, "ReadingValue":"43.6", "Tooltip":"Someinfo"}]

我希望能够通过每个阵列环及其所有元素。

到目前为止,我只能遍历主数组,而不能遍历其内容。

  success: function (d) {
            var parsedData = $.parseJSON(d);                
            var objCount = Object.keys(parsedData).length;
            $.each(parsedData, function (key, value) {
                console.log[value.LoggerId, new Date(value.ReadingDate), Number(value.ReadingValue), value.ToolTip]
            }); 
   },

我尝试了一些嵌套循环,但是我将对象未定义为错误。

我想遍历0及其所有元素并分配它们,然后依次为1、2,依此类推...

TIA

3 个答案:

答案 0 :(得分:1)

如果收到json阵列然后respose就可以通过循环each在方法jQuery

var data = [
	[{
		"LoggerId": "1000651443",
		"ReadingDate": "2018-12-05 00:03:03",
		"ReadingValue": "12.6",
		"Tooltip": "Someinfo"
	}],
	[{
		"LoggerId": "1000651444",
		"ReadingDate": "2018-12-05 00:03:05",
		"ReadingValue": "12.9",
		"Tooltip": "Someinfo"
	}],
	[{
		"LoggerId": "1000651446",
		"ReadingDate": "2018-12-05 00:03:17",
		"ReadingValue": "13.6",
		"Tooltip": "Someinfo"
	}]
];

$.each(data, function(i, item) {
    console.log(item[0].LoggerId);
    $("#res").append(item[0].LoggerId + "<br>");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="res"></div>

如果您的json文件中有大量数据,请尝试使用get方法

$.get("https://jsonstorage.net/api/items/344a6593-6ee4-45b2-a85c-227f76e32880", function(data, status){
    $.each(data, function(i, item) {
        console.log(item.LoggerId);
        $("#res").append(item.LoggerId + "<br>");
    });
}); 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="res"></div>

答案 1 :(得分:1)

您主要的问题是在这一行:

$.each(parsedData, function (key, value) {

您有一组对象数组:这意味着您需要使用value [0]而不是value。

您可以继续使用该格式的 value.LoggerId .... 如果您flat您的数组:

$.each(parsedData.flat(), function (key, value) {

摘要:

var parsedData = [[{
    "LoggerId": "1000651443",
    "ReadingDate": "2018-12-05 00:03:03",
    "ReadingValue": "12.6",
    "Tooltip": "Someinfo"
}],
    [{
        "LoggerId": "1000651444",
        "ReadingDate": "2018-12-05 00:03:05",
        "ReadingValue": "12.9",
        "Tooltip": "Someinfo"
    }],
    [{
        "LoggerId": "1000651446",
        "ReadingDate": "2018-12-05 00:03:17",
        "ReadingValue": "13.6",
        "Tooltip": "Someinfo"
    }]] ;


//
// first solution
//
$.each(parsedData, function (key, value) {
    console.log(value[0].LoggerId, new Date(value[0].ReadingDate), Number(value[0].ReadingValue), value[0].Tooltip)
});

console.log('-----------------------------');
//
// second solution with array.flat
//
$.each(parsedData.flat(), function (key, value) {
    console.log(value.LoggerId, new Date(value.ReadingDate), Number(value.ReadingValue), value.Tooltip)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

根据您的最后评论:

  

每个阵列[{A,B,C,d}]是唯一的设备,所以0:[{A,B,C,d}]和1:[{A,B,C,d}]是两个不同的数据集。因此,我需要遍历索引([0],1,[2],[3]等),然后遍历其中的元素{a,b,c,d}

一个简单的解决方案可以是一个双为:

var arr = [[1,2,3], [4,5,6], [7,8,9]];

for(var i=0; i< arr.length; i++) {
    console.log('sub array N. ' + i);
    for(var j=0; j<arr[i].length; j++) {
        console.log('element n. ' + j + ': ' + arr[i][j]);
    }
}

答案 2 :(得分:0)

以下对我有用:

            success: function (d) {               
                var parsedData = $.parseJSON(d);
                $.each(parsedData, function (key, value) {  
                    var result = $.parseJSON(value);  
                    $.each(result, function (k, v) {
                        //display the key and value pair
                        console.log([new Date(v.ReadingDate), Number(v.ReadingValue)]);
                    });

                });   
            },

我能够遍历数组,然后遍历键的内容。一旦我从各个数组中解析了JSON数据,它似乎就可以工作了。