Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.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 JS:name/val对到数组_Javascript_Arrays_List - Fatal编程技术网

Javascript JS:name/val对到数组

Javascript JS:name/val对到数组,javascript,arrays,list,Javascript,Arrays,List,我使用的是一种一次性语言,在语法上类似于javascript,所以用这种更通用的语言回答就足够了 我有一个name/val对的列表,它是我从一个看起来像 "n1=v1,n2=v2..." 我不确定我最初的方法是否正确。我在这种语言中使用了原语 tolist(GETstring,"=") 将名称-值对拆分到上面的列表中。也许,这是从大门进来的错误方法 这给了我 data = [["n1","v1"],["n2","v2"],...] 我正在尝试将其更改为命名数组,例如 data["n1"]=

我使用的是一种一次性语言,在语法上类似于javascript,所以用这种更通用的语言回答就足够了

我有一个name/val对的列表,它是我从一个看起来像

"n1=v1,n2=v2..."
我不确定我最初的方法是否正确。我在这种语言中使用了原语

tolist(GETstring,"=")
将名称-值对拆分到上面的列表中。也许,这是从大门进来的错误方法

这给了我

data = [["n1","v1"],["n2","v2"],...]
我正在尝试将其更改为命名数组,例如

data["n1"]="v1";
data["n2"]="v2";
...
这样我就可以按名称访问项目,而不是按列表索引(因为这是非常随意的)


以这种格式获取数据的更好方法是什么。我已经尝试了包括评估在内的一些方法,但似乎没有任何效果。

没有选择。您有两种方法来解决
问题

  • 创建两个数组,一个用于键,一个用于值

    var indexes = ["test", "test2"];
    var values = ["val", "val2"];
    var value = values[indexes.indexOf("test2")]; // will get "val2"
  • 为字符串键创建键为
    0
    且值为
    1
    的嵌套数组


  • 您必须将字符串拆分,然后遍历它

    var obj = {};
    var originalString = "n1=v1,n2=v2";
    var splitOriginalString = originalString.split(",");
    for (var i = 0; i < splitOriginalString.length; i++) {
        var tmpObj = splitOriginalString[i].split("=");
        obj[tmpObj[0]] = tmpObj[1];
    }
    
    var obj={};
    var originalString=“n1=v1,n2=v2”;
    var splitOriginalString=originalString.split(“,”);
    对于(变量i=0;i
    如果排序不重要(或者数据可以稍后排序),并且所有键都很好地映射到字符串,请使用“普通对象”作为映射/字典。在这种情况下,在现有数据上使用循环是相当简单的,并且不需要
    eval
    。我认为您希望使用
    for(var k=0;k
    ,因为您访问的是数组而不是对象属性。上面的代码工作正常,这不是一个好主意。例如,请参见此处:(既然使用另一种方法很容易,为什么不使用它?@Todd,我已经更新了答案,因为您提到的帖子表明,在javascript中使用数组时,处理器有时会得到错误的长度。我还没有体验到这个结果,但正如你所说,使用替代方法很容易,所以为什么不使用它呢。另外,如果对大量数据进行迭代,则使用(var i=0;…for(var i=0;…将执行得更好。谢谢,我对这一点做了一些修改,以适应语言,现在我有了一些对象对:)