0

对我来说似乎很复杂。首先,我有这个清单:

    liste_path_categories.push(
    { index: null
        , letter: "letter1"
        , type: key
        , picture_url: "url1"
        , id_categ: null
        , response: "Answer here"
    });

我想要的是从这个大列表中提取这种形式的对象:

     data["String1"]["String2"]= String3

和 :

    String1=list_path_categories[i].letter
    String2=list_path_categories[i].id_categ
    String3=list_path_categories[i].response

例子:

     data['A']['12'] : "A_answer"

要声明数据,我这样做:

       var data = new Object(new Object);

如何设置数据中的所有值?

4

4 回答 4

0

你的问题很模糊,但你的意思是这样的吗?在属于另一个对象的对象中设置动态属性?

data['A']['12'].answer = "A_answer"
于 2013-04-08T11:45:45.800 回答
0

您必须在属性访问中使用变量,而不是使用字符串:

var data = {};

if (!data[String1]) {
    data[String1] = {}; // make sure that data[String1] exists and is an object
}

data[String1][String2] = String3;

如果要对数组中的元素执行此操作,则必须遍历数组


PS:我建议使用比StringX.

于 2013-04-08T11:50:16.500 回答
0

首先创建构造函数(在 OOP 术语中):

var ctor_object = function(letter,id_categ,response)
{ 
    this.letter = letter;
    this.id_cated = id_categ;
    this.response = response;
}

(在一般情况下,您应该省略 ctor_ 语法并直接在对象类的名称之后命名)

然后在您的类别列表中使用您的构造函数:

var length = liste_path_categories.length,
    element = null;
for (var i = 0; i < length; i++)
{
  element = liste_path_categories[i];
  my_obj = new ctor_object(element.letter,element.id_categ,element.reponse)
  // Do something with my_obj
}
于 2013-04-08T11:51:45.063 回答
0

您可以使用Array.forEach方法遍历 liste_path_categories 并构造您的数据对象。

例子:

var liste_path_categories = [];
var data = {};

liste_path_categories.push(...);
...
liste_path_categories.push(...);


liste_path_categories.forEach(function(element) {
    data[element.letter] = {};
    data[element.letter][element.id_categ] = element.response;
});

jsFiddle 示例:http: //jsfiddle.net/3ZvNf/

于 2013-04-08T11:52:37.300 回答