Создание объекта Javascript со свойствами индекса - PullRequest
0 голосов
/ 23 февраля 2012

Я думаю, что правильно сформулировал название, но ...

Допустим, у меня есть массив:

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) .значение (1), предмет (1) .значение (2) и т.д ...

Я понимаю, что будут циклы, проходящие через каждый массив, и затем, используя индекс arr, я могу заполнить значения, однако моя проблема сосредоточена вокруг фактического создания свойств obj ' item (). Name 'или' item (). value () '. Как можно это сделать?

UPDATE

На самом деле это часть вызова API, и она должна выглядеть так, как написано выше, поскольку позднее она расширяется в объекте данных и передается вызову. Надеюсь, это немного прояснит.

т.е. * * 1 034

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 голосов
/ 23 февраля 2012

Вместо этого рассмотрим структуры на основе 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'      
     ]
}
0 голосов
/ 23 февраля 2012
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];
    }
}

надеюсь, это поможет -ck

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...