Javascript字符串到数组索引

时间:2014-02-05 15:30:17

标签: javascript arrays function object arguments

我有一个从JSON文件导入的javascript数组,如:(让我们称之为jsonArray

"0": {
   "0":{
     Variables
   },
   "1":{
     Variables
   }
},
"1": {
   "0":{
     Variables
   },
   "1":{
     Variables
   },
   "2":{
     Variables
   },
   "3":{
     Variables
   }
}

在函数中,我希望能够传递字符串,如:

"1:2" or "1" or "0:0"

然后我可以拆分:

function myFunction(a) {
   var b = a.split(":");
   var c = ...
}

我希望能够使用该函数参数中的值来访问jsonArray。 例如:

When I call myFunction("1:2"); this should happen: var c = jsonArray[1][2]

or myFunction("1"); -->  var c = jsonArray[1]

我该怎么做才能实现这一目标?或者什么是获得这个结果的更好方法?

3 个答案:

答案 0 :(得分:2)

试试这个:

function myFunction(a) {
    var b = a.split(":");
    var c = myObject;
    for(var i = 0; i < b.length; i++){
        c = c[b[i]];
    }
    return c;
}

答案 1 :(得分:0)

类似的东西应该有效(未经测试):

function myFunction (compositeKey){
    var keySplits = compositeKey.split(":");
    var scope = jsonArray;
    for (var n in keySplits){
        if (typeof scope[keySplits[n]] == "undefined"){ 
            return null; 
        }
        scope = scope[keySplits[n]];
    }
    return scope;
}

myFunction("1:2");

答案 2 :(得分:0)

这可能会让你开始,虽然我将JSON简化为一个级别:

var data = [{'variable':'variable','variable':'variable'}];
var myFn = function(a, b){
  return a[b[0]][b[2]];
}

测试用例:

http://jsfiddle.net/2bUgD/

希望它为您提供工作基础。当然,您可以非常轻松地将该功能转换为&#34;类的原型功能。或(ಠ_ಠ)用于内置,并将其设置为动态返回不同对象深度等值。