как получить имя из массива объектов - PullRequest
0 голосов
/ 13 июня 2011

У меня есть массив объектов в нотации массива. Этот массив будет отличаться каждый раз.

Я хочу иметь возможность получить имя элементов в этом массиве. Проблема у меня в том, что, например, возвращается [объект] вместо возврата assetA. Я знаю, что это потому, что assetA - это сам объект.

Пример кода, который я использовал для проверки этого:

//the assetArray will have varying number of elements in the future
var assetArray=[assetX,assetY,assetZ, assetB, assetA];
var testtest=(new String(assetArray));
alert(testtest);
$.each(assetArray,function(intIndex,objValue){
    var test123=(new String(assetArray[intIndex]));
    alert(test123);
});

и список тестовых активов ..

var assetX = {
    assetNumber: "TESTX",
    assetDescription: "FLUX CAPACITOR",
    assetManufacturer: "Honeywell",
    assetCustomer: "MCFLY",
    assetDate: "03/04/1956"
};
var assetY = {
    assetNumber: "C123Y",
    assetDescription: "HOVERBOARD",
    assetManufacturer: "GE",
    assetCustomer: "MCFLY",
    assetDate: "12/03/1945"
};
var assetZ = {
    assetNumber: "9000Z",
    assetDescription: "ROCKETFOOTBALL",
    assetManufacturer: "Fluke",
    assetCustomer: "MCFLY JR.",
    assetDate: "01/05/3030"
};
var assetA = {
    assetNumber: "C34JJXA",
    assetDescription: "TEST DESCRIPTION",
    assetManufacturer: "Elgar",
    assetCustomer: "CUSTOMER1",
    assetDate: "05/09/1923"
};
var assetB = {
    assetNumber: "C892ALB",
    assetDescription: "DMM",
    assetManufacturer: "Agilent",
    assetCustomer: "CUSTOMER2",
    assetDate: "02/12/1986"
};

Кто-нибудь имеет опыт решения подобных проблем с использованием jQuery?

Ответы [ 4 ]

2 голосов
/ 13 июня 2011

Нет такой вещи, как название объекта.Есть объекты, полная остановка.Есть ноль или более переменных, которые относятся к данному объекту, полная остановка.Вы не можете перейти от объекта к переменным, которые ссылаются на него, точка остановки, новый абзац.

Если это «имя» является важным свойством самого объекта, включите его в объект (добавьте name поле) или используйте ассоциативный массив (он же пространство имен, объект под капотом) с этим «именем», являющимся ключом, а объекты актива - значениями вместо массива.

1 голос
/ 13 июня 2011

Храните ваши объекты актива в объекте как свойства (т.е. используйте ассоциативный массив вместо порядкового массива):

var assets = {
    assetX: {
        assetNumber: "TESTX",
        assetDescription: "FLUX CAPACITOR",
        assetManufacturer: "Honeywell",
        assetCustomer: "MCFLY",
        assetDate: "03/04/1956"
    },
    assetY: {
        assetNumber: "C123Y",
        assetDescription: "HOVERBOARD",
        assetManufacturer: "GE",
        assetCustomer: "MCFLY",
        assetDate: "12/03/1945"
    },
    ...
};

$.each(assets, function (name, asset) {
    // name is the name (e.g. "assetX")
    // asset is the object instance
});
0 голосов
/ 13 июня 2011

Я бы предложил использовать обычный объект JavaScript для сопоставления имен объектов со значениями.

0 голосов
/ 13 июня 2011

Я не уверен, что вы хотите отобразить.

Но вы можете просто отобразить отдельные части объекта:

//the assetArray will have varying number of elements in the future
var assetArray=[assetX,assetY,assetZ, assetB, assetA];
var testtest=(new String(assetArray));
alert(testtest);
$.each(assetArray,function(intIndex,objValue){
    var test123=objValue.assetNumber; //etc
    alert(test123);
});
...