我是javascript的新手,想知道如何将价值推向json。 我试图在谷歌查看,但找不到我想要的任何解决方案。
这是我推送javascript的代码。
var jsonfile = {channel: []};
function WebSocket(){
if ("WebSocket" in window){
var channel = "hello";
var socket = io.connect("my socket address");
socket.on(channel, function (d) {
var data = JSON.parse(d);
//console.log(channel + " : " + d);
var theDiv = document.getElementById(data.node_info[1].info.mac);
if(theDiv == null) {
var divTag = document.createElement("div");
divTag.id = data.node_info[1].info.mac; //"drag1"
divTag.className = "draggable js-drag";
divTag.innerHTML = data.node_info[1].info.mac;
document.getElementsByTagName('body')[0].appendChild(divTag);
jsonfile.channel.push(divTag.id);
console.log(jsonfile)
//console.log(jsonfile.channel.length);
//$('#'+data.node_info[1].info.mac).load('#'+data.node_info[1].info.mac);
}
});
socket.on('crc_err', function(packet){
console.log("crc_err : " + packet);
});
socket.on('type_err', function(packet){
console.log("type_err : " + packet);
});
}
else{
// The browser doesn't support WebSocket
// alert("WebSocket NOT supported by your Browser!");
}
}
我正在将mac地址从webSocket推送到var jsonfile
,然后想将其他值推送到该mac地址,如下面的代码
for (i = 0; i <= jsonfile.channel.length; i++){
if($(jsonfile.channel[i]).css('left') != 0){
jsonfile.channel[i].push([$(jsonfile.channel[i]).css('left')]); ------>ERROR
console.log(jsonfile.channel[i]);
}
但是,Uncaught TypeError: jsonfile.channel[i].push is not a function
我希望它像将div的样式(左值)推送到该mac地址。
jsonfile = {channel: ["B8:27:EB:FF:7B:45" : [$(jsonfile.channel[i]).css('left')]]}
我该如何解决这个问题......? 有人帮帮我吗?
提前致谢。
答案 0 :(得分:1)
在这种情况下,jsonfile.channel
是一个数组,其原型链中有push
方法。
Array.push
将新项添加到数组的末尾。您尝试使用的数据结构不是有效的JavaScript。 JavaScript中的数组可以包含许多不同的数据类型,但它是一个简单的数据结构;不知道数组中的关联。数组只是一个有序的值列表,从元素0处的项开始,以元素n处的项结束,其中n是数组的长度(-1,因为我们从0开始)。
在这种情况下,您将字符串值(mac地址)推送到&#34; jsonfile.channel&#34;阵列。字符串值没有&#34; push&#34;方法,因此您看到的错误为jsonfile.channel[i].push is not a function
。
我认为你想要的是使用嵌套对象,它可以让你选择存储多个关联值,所以:
jsonfile = {channel:{"B8:27:EB:FF:7B:45": $(jsonfile.channel[i]).css('left')}}
如果要添加到新对象,只需执行以下操作:
jsonfile.channel['XX:XX:XX:XX:XX:XX'] = $(jsonfile.channel[i]).css('right')
其中XX:XX:XX:XX:XX:XX
是jsonfile.channel对象中项目的键名。
我建议您阅读不同的JavaScript数据类型,以找到最适合您需求的内容。在网上提供许多免费的JavaScript入门课程之一,这是明智的时间投入。
我希望这很有用。如果有任何不清楚的地方,请随时跟进。