Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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_Push - Fatal编程技术网

Javascript 如何将项目推送到json文件?

Javascript 如何将项目推送到json文件?,javascript,json,push,Javascript,Json,Push,我是javascript的新手,想知道如何将值推送到json。 我试图在谷歌上搜索,但找不到任何我想要的解决方案 下面是我的代码,用于导入javascript var jsonfile = {channel: []}; function WebSocket(){ if ("WebSocket" in window){ var channel = "hello"; var socket = io.connect("my socket address"); socket

我是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]);
  }
我如何解决这个问题。。。? 有人帮我吗

提前感谢。

在本例中,jsonfile.channel是一个数组,它的原型链中有一个push方法

Array.push将新项添加到数组的末尾。您尝试使用的数据结构不是有效的javascript。JavaScript中的数组可以容纳许多不同的数据类型,但它是一个简单的数据结构;数组中没有关联的概念。数组只是一个有序的值列表,从元素0的项开始,到元素n的项结束,其中n是数组-1的长度,因为我们从0开始

在本例中,您正在将mac地址的字符串值推送到jsonfile.channel数组中。字符串值没有push方法,因此出现错误,您看到的是jsonfile.channel[i]。push不是函数

我认为您需要的是使用嵌套对象,这将为您提供存储多个关联值的选项,因此如下所示:

jsonfile={channel:{B8:27:EB:FF:7B:45:$jsonfile.channel[i].css'left'}

如果要添加到新对象,只需执行以下操作:

jsonfile.channel['XX:XX:XX:XX:XX']=$jsonfile.channel[i].css'right'

其中XX:XX:XX:XX:XX:XX是jsonfile.channel对象中项的键名

我建议您仔细阅读不同的JavaScript数据类型,以找到最适合您需要的内容。在网上提供的众多免费JavaScript入门课程中选择一门,这将是明智的时间投资


我希望这是有用的。如果有任何不清楚的地方,请随时跟进。

修复此错误:i iTrue谢谢你的回答,我试过使用jsonfile.channel['XX:XX:XX:XX:XX:XX']=$jsonfile.channel[I].css'right'但使用I代替'XX:XX:XX:XX:XX:XX:XX'这让我在使用控制台时没有定义。lognvm,我明白了!谢谢你的回答和解释
jsonfile = {channel: ["B8:27:EB:FF:7B:45" : [$(jsonfile.channel[i]).css('left')]]}