获取带字符串标识符的对象

时间:2015-10-12 07:28:50

标签: javascript string object properties identifier

我需要帮助在JS中使用String获取对象的属性。

我有对象

function getObjectByStringIdentifier ( stringId ) {
    return elements[stringId];
}

我有JS功能,输入是" element.date.day" 。和 基本上我需要做这样的事情:

CREATE TABLE t
    (`id` int, `name` varchar(4), `type` int)
;

INSERT INTO t
    (`id`, `name`, `type`)
VALUES
    (1, 'vinu', 1),
    (2, 'rinu', 2),
    (3, 'dilu', 1),
    (4, 'raju', 2),
    (5, 'manu', 3),
    (6, 'saju', 3),
    (7, 'ragu', 3),
    (8, 'sonu', 1),
    (9, 'sam', 1),
    (10, 'rag', 1)
;

这可能在JS吗?

4 个答案:

答案 0 :(得分:1)

你可以做这样的事情



var elements = {
  element: {
    date: {
      day: 'Monday'
    },
    example: {
      abc: 'hii'
    }
  }
};

function getObjectByStringIdentifier(stringId) {
  stringId = stringId.split('.');
  // split string using `.`
  var res = elements;
  // define res as object
  for (var i = 0; i < stringId.length; i++)
  // iterate over array
    res = res[stringId[i]]
    // update res as inner object value
  return res;
  // return result
}

console.log(getObjectByStringIdentifier("element.date.day"));
console.log(getObjectByStringIdentifier("element.example.abc"));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以这样做:

&#13;
&#13;
var elements = {
    element : {
            date: {
                 day: 'Monday'
            }
    },
    cars : {
        racing : "Lamborghini",
        classic: "Rolls Royce"  
    }
}


function getObjectByStringIdentifier ( stringId ) {
    objects = stringId.split(".");
    element = elements; 
    for(i=0; i < objects.length; i++)
        element = element[objects[i]]; 
    return element;
}

alert(getObjectByStringIdentifier("cars.racing"));
alert(getObjectByStringIdentifier("element.date.day"));
alert(getObjectByStringIdentifier("cars.classic"));
&#13;
&#13;
&#13;

答案 2 :(得分:0)

可以! : - )

&#13;
&#13;
var elements = {
    element : {
            date: {
                 day: 'Monday'
            }
    }
}

function getObjectByStringIdentifier ( stringId ) {
    
    //return elements[stringId];
    //            ^      ^  
    //            |      |  
    //            |------|---------------------------------------------|  
    //                   |                                             |
    //        -----------|                                             | 
    //        |                                                        |
    //        °                                                        °
    return stringId.split('.').reduce(function(t,v){return t[v]; } , elements)
}


/** let's test it now ! **/

var stringIdentifier = "element.date.day";
var result = getObjectByStringIdentifier( stringIdentifier );


document.getElementById('el').innerHTML = result;
&#13;
<div id='el'></div>
&#13;
&#13;
&#13;

答案 3 :(得分:-1)

现代浏览器支持JSON.parse()。

var arr_from_json = JSON.parse( json_string );

在没有的浏览器中,您可以包含json2库。

alert(arr_from_json.elements);