Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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格式格式化返回的表数据_Javascript_Json - Fatal编程技术网

Javascript 以json格式格式化返回的表数据

Javascript 以json格式格式化返回的表数据,javascript,json,Javascript,Json,我对javascript相当陌生。我从sql server数据库检索数据,如下所示: [Object { shortcode="0013A2004031AC9A", latest_measurement=1067, keyid="6801"}, Object { shortcode="0013A2004031AC9A", latest_measurement=7, keyid="6802"}, Object { shortcode="0013A2004031AC9A", latest_m

我对javascript相当陌生。我从sql server数据库检索数据,如下所示:

[Object { shortcode="0013A2004031AC9A", latest_measurement=1067, keyid="6801"}, 
 Object { shortcode="0013A2004031AC9A", latest_measurement=7, keyid="6802"}, 
 Object { shortcode="0013A2004031AC9A", latest_measurement=8598838, keyid="6803"}]
{mac : 0013A2004031AC9A, keys : {6801:1067, 6802:7, 6803:8598838}}
我想将其格式化为json格式,如下所示:

[Object { shortcode="0013A2004031AC9A", latest_measurement=1067, keyid="6801"}, 
 Object { shortcode="0013A2004031AC9A", latest_measurement=7, keyid="6802"}, 
 Object { shortcode="0013A2004031AC9A", latest_measurement=8598838, keyid="6803"}]
{mac : 0013A2004031AC9A, keys : {6801:1067, 6802:7, 6803:8598838}}
但我就是不明白

我有

var jsonDataPerMac = {};
我在上面的json对象上循环,对于我发现的每一个新mac,我都这样做:

 jsonDataPerMac[i]={"mac": device.shortcode, "keys":[]};
但是我怎么才能填好钥匙呢? 如有任何提示,将不胜感激。请在此处输入代码


您需要先合并这些条目

var reducedData = {};
$.each(macs, function(index,macitem){
    if (reducedData.hasOwnProperty(macitem.shortcode)) {
        reducedData[macitem.shortcode].push(macitem.key);
    } else {
        reducedData[macitem.shortcode] = [ macitem.key ];
    }
});
然后在数组中映射到所需的格式

var jsonDataPerMac = [],
    i = 0;
$.map(reducedData, function(keys,mac){
    jsonDataPerMac[i++] = {"mac": mac, "keys": keys};
    // your other code goes here
});

另外,您对jsonDataPerMac的使用表明您希望它是一个数组。

以下是我的建议。我宁愿避免使用jQuery来执行如此简单的操作。在这个特定的示例中,我们在循环中使用forEach和for

您可以将上述代码转换为函数,然后在ajax onSuccess方法中重用它。记住将数组作为参数传递,并返回newArray

JSFiddle:

谢谢,这正是我想要的。我非常感谢您的帮助。欢迎您:您可以随时将我的回答标记为有帮助,这将是对我的一点奖励。毕竟这并不完全是我想要做的,但在我的示例中可能不清楚:{mac:0013A2004031AC9A,key:{6801:10676802:76803:8598838}6801,6082和6803必须是密钥和mac之类的标识符。我想处理newArray.keys.6801,以便能够在不同的键值之间进行计算和比较。如果您需要任何帮助,请在此处留下评论,我们将尝试修改此代码,使其完全适合您。如果您能给我一个提示,那将非常棒。谢谢。