使用索引属性创建Javascript对象

时间:2012-02-22 20:52:19

标签: javascript arrays object indexing

我认为我正确地说了这个标题,但是......

假设我有一个阵列:

  

var arr = ['set1','set2','set3','set4','set5','set6'];

我需要创建一个像这样的对象:

'item(0).name' : '//some string'

'item(0).value(0)' : 'set1' // a.k.a arr[0] 

'item(0).value(1)' : 'set2' // a.k.a arr[0]

'item(0).value(2)' : 'set3' // a.k.a arr[0]

等...

然后继续,还可以继续 item(1).name ,之后所有其他属性将是 item(1).value(0), item(1).value(1),item(1).value(2)等......

我知道每个数组都会有循环,然后使用arr索引我可以填充值,但是我的麻烦在于实际创建obj属性' item()。name '或' item()。value()'。如何实现这一目标?

更新

这实际上是API调用的一部分,并且必须看起来像上面所写,因为它稍后在数据obj中扩展并传递给调用。希望能稍微清理一下。

  

var data = {

     

x:0,

     

y:1,

     

z:6,

     

'item(0).name':'string',

     

'item(0).value(0)':'set1',

     

'item(0).value(1)':'set2',

     

'item(0).value(2)':'set3'

     

}

2 个答案:

答案 0 :(得分:0)

function demo(name, vals) {
    this.name = name;
    this.value = vals || [];
}


var x = new demo('some string',  ['set1','set2','set3','set4','set5','set6']);

console.log(x.name);
console.log(x.value[0]); // etc...


var item = [x, new demo('some string2',  ['set1','set2','set3','set4','set5','set6'])];
console.log(item[0].value[1]);  // etc...

或创建一个包装器(如果你不想直接通过[..]索引):

function demo2(name, vals) {
    this.name = name;
    this.value = function(index) {
        return vals[index];
    }
}

希望这有助于确认

答案 1 :(得分:0)

考虑使用基于JSON的结构。它们比简单的数组更具自我描述性。属性可以非常随意。

{
    "firstName": "Jason",
    "lastName": "Jones",
    "address": {
        "city": "San Francisco, CA",
        "zip": 94121,
        "address": "444 Columbus Ave"
    },
    "email": [
        "jason@sf.com",
        "sjones@adobe.com"
       ]
}

修改:您的数据(?)

var data = {
    'x':0,
    'y':1,
    'z':6,
    'name':'something',
    'item': [
        'value':'set1',
        'value':'set2',
        'value':'set3'      
     ]
}