2016-06-22 5 views
2

У меня есть многомерный массив, который я пытаюсь выполнить. Я хочу, чтобы цикл, в конечном счете, просмотрел первый объект (в коде примера: "pressure"), затем выполните конкретное действие для каждого объекта внутри первого объекта.jQuery каждый цикл 3-мерный массив объектов

Но я даже не могу заставить его работать правильно. Я знаю, что моя функция $.each совершенно неверна - я просто не могу понять, как это сделать правильно. Конечно, я ничего не вижу в консоли.

$(document).ready(function() { 
 
    var units = { 
 
    "pressure": [ 
 
     { 
 
     short: "atm", 
 
     val: "1", 
 
     long: "Atmosphere (standard)" 
 
     }, { 
 
     short: "bar", 
 
     val: "1.01325027383089", 
 
     long: "Bar" 
 
     }, { 
 
     short: "cmHg", 
 
     val: "76.0000526890144", 
 
     long: "Centimeter of Mercury (0℃)" 
 
     }, { 
 
     short: "cmH2O", 
 
     val: "1033.25183423631", 
 
     long: "Centimeter of Water (4℃)" 
 
     }, { 
 
     short: "ft-H2O", 
 
     val: "33.899503811341", 
 
     long: "Foot of Water (4℃)" 
 
     }, { 
 
     short: "GPa", 
 
     val: "0.00010132502738", 
 
     long: "Gigapascal" 
 
     }, { 
 
     short: "HPa", 
 
     val: "1013.25027383088", 
 
     long: "Hectopascal" 
 
     }, { 
 
     short: "inHg", 
 
     val: "29.9212805862261", 
 
     long: "Inch of Mercury (0℃)" 
 
     }, { 
 
     short: "inH2O", 
 
     val: "406.793640435982", 
 
     long: "Inch of Water (4℃)" 
 
     }, { 
 
     short: "kPa", 
 
     val: "101.325027383089", 
 
     long: "Kilopascal" 
 
     }, { 
 
     short: "MPa", 
 
     val: "0.10132502738309", 
 
     long: "MegaPascal" 
 
     }, { 
 
     short: "mbar", 
 
     val: "1013.25027383088", 
 
     long: "Millibar" 
 
     }, { 
 
     short: "mtorr", 
 
     val: "760000.526890144", 
 
     long: "Millitorr" 
 
     }, { 
 
     short: "mmHg", 
 
     val: "760.000205385833", 
 
     long: "Millimeter of Mercury (0℃)" 
 
     }, { 
 
     short: "mmH2O", 
 
     val: "10332.5183423631", 
 
     long: "Millimeter of Water (4℃)" 
 
     }, { 
 
     short: "Pa", 
 
     val: "101325.027383088", 
 
     long: "Pascal" 
 
     }, { 
 
     short: "psf", 
 
     val: "2116.21372690676", 
 
     long: "Pound-Force/Square-Foot" 
 
     }, { 
 
     short: "psi", 
 
     val: "14.6959793215884", 
 
     long: "Pound-Force/Square-Inch" 
 
     }, { 
 
     short: "Torr", 
 
     val: "760.000526890144", 
 
     long: "Torr" 
 
     } 
 
    ], 
 

 
    "density": [ 
 

 
     { 
 
     short: "lb/in3", 
 
     val: "1", 
 
     long: "Pound/Inch-Cubed" 
 
     }, { 
 
     short: "lb/ft3", 
 
     val: "1728.00001173627", 
 
     long: "Pound/Foot-Cubed" 
 
     }, { 
 
     short: "slug/ft3", 
 
     val: "53.707964051111", 
 
     long: "Slug/Foot-Cubed" 
 
     }, { 
 
     short: "grain/ft3", 
 
     val: "12094392.8271733", 
 
     long: "Grain/Foot-Cubed" 
 
     }, { 
 
     short: "grain/in3", 
 
     val: "6999.99988928036", 
 
     long: "Grain/Inch-Cubed" 
 
     }, { 
 
     short: "g/cm3", 
 
     val: "27.679904710267", 
 
     long: "Gram/Centimeter-Cubed" 
 
     }, { 
 
     short: "g/cup", 
 
     val: "6.548788655679", 
 
     long: "Gram/Cup" 
 
     }, { 
 
     short: "g/L", 
 
     val: "27679.9047102671", 
 
     long: "Gram/Liter" 
 
     }, { 
 
     short: "kg/cm3", 
 
     val: "0.02767990471", 
 
     long: "Kilogram/Centimeter-Cubed" 
 
     }, { 
 
     short: "kg/L", 
 
     val: "27.679904710267", 
 
     long: "Kilogram/Liter" 
 
     }, { 
 
     short: "kg/m3", 
 
     val: "27679.9047102671", 
 
     long: "Kilogram/Meter-Cubed" 
 
     } 
 
    ] 
 
    }; 
 

 
    $.each(units, function(index, obj) { 
 
    $.each(obj, function(short, val) { 
 
     console.log(obj.index.short); 
 
     console.log(obj.index.val); 
 
    }); 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

В вашем случае вы можете захотеть итерации с некоторыми для (var type in units) {for (свойство var в единицах [type]) {}} –

+0

'obj.index'? Разве вы не имеете в виду 'obj [index]'? – Xufox

+0

Просто используйте простой javascript для .. в .. – Rai

ответ

2

При использовании синтаксиса . ссылаться на свойства объекта, вы пытаетесь получить доступ к этой буквального имущество.

Например, obj.index.short. Это ищет свойство, которое называется index, а затем называется short. Я предполагаю, что вы хотите использовать indexпеременную, чтобы вы имели доступ к правильному свойству.

Нечто вроде: obj[index].short. Это не сработает, хотя, поскольку ваше значение obj[index] является массивом.

Что вы хотите сделать, это цикл над внешним объектом, а затем цикл над каждым свойством (который является массивом) и получить значения каждого элемента массива (объекта).

Попробуйте это:

$.each(units, function(index, obj){ 
    // `index` is either "pressure" or "density" 
    // `obj` is the value of that property (an array) 
    $.each(obj, function(short, val){ 
     // `short` is the index in the array 
     // `val` is each element in the array, it's an object 
     console.log(val.short); 
     console.log(val.val); 
    }); 
}); 
+0

Спасибо! это отлично работает. Думаю, я не должен использовать «val» в качестве ключа – Sanya

+0

@Sanya: Думаю, у вас нет 'val.val', который может выглядеть глупым. Вы можете оставить 'val' как свойство в вашем объекте и просто изменить код, чтобы использовать что-то еще, например' data.val' или что-то в этом роде. –

3

Вы можете захотеть сделать что-то вроде этого:

Object.keys(units).forEach((key, index) => { // loop over the units keys 
    units[key].forEach(object => { // loop over the objects in arrays 
     // do your stuff with the objects 
    }); 
}); 
3
$.each(units, function(index, obj) { 
console.log(index) 
    $.each(obj, function(short, val) { 
    console.log(val.short); 
    console.log(val.val); 
    }); 
}); 
+0

Вы были так близко. Rocket Hazmat был на 1 минуту быстрее. – Sanya

+0

спасибо за понимание –

1

$(document).ready(function() { 
 
    var units = { 
 
    "pressure": [ 
 
     { 
 
     short: "atm", 
 
     val: "1", 
 
     long: "Atmosphere (standard)" 
 
     }, { 
 
     short: "bar", 
 
     val: "1.01325027383089", 
 
     long: "Bar" 
 
     }, { 
 
     short: "cmHg", 
 
     val: "76.0000526890144", 
 
     long: "Centimeter of Mercury (0&#8451;)" 
 
     }, { 
 
     short: "cmH2O", 
 
     val: "1033.25183423631", 
 
     long: "Centimeter of Water (4&#8451;)" 
 
     }, { 
 
     short: "ft-H2O", 
 
     val: "33.899503811341", 
 
     long: "Foot of Water (4&#8451;)" 
 
     }, { 
 
     short: "GPa", 
 
     val: "0.00010132502738", 
 
     long: "Gigapascal" 
 
     }, { 
 
     short: "HPa", 
 
     val: "1013.25027383088", 
 
     long: "Hectopascal" 
 
     }, { 
 
     short: "inHg", 
 
     val: "29.9212805862261", 
 
     long: "Inch of Mercury (0&#8451;)" 
 
     }, { 
 
     short: "inH2O", 
 
     val: "406.793640435982", 
 
     long: "Inch of Water (4&#8451;)" 
 
     }, { 
 
     short: "kPa", 
 
     val: "101.325027383089", 
 
     long: "Kilopascal" 
 
     }, { 
 
     short: "MPa", 
 
     val: "0.10132502738309", 
 
     long: "MegaPascal" 
 
     }, { 
 
     short: "mbar", 
 
     val: "1013.25027383088", 
 
     long: "Millibar" 
 
     }, { 
 
     short: "mtorr", 
 
     val: "760000.526890144", 
 
     long: "Millitorr" 
 
     }, { 
 
     short: "mmHg", 
 
     val: "760.000205385833", 
 
     long: "Millimeter of Mercury (0&#8451;)" 
 
     }, { 
 
     short: "mmH2O", 
 
     val: "10332.5183423631", 
 
     long: "Millimeter of Water (4&#8451;)" 
 
     }, { 
 
     short: "Pa", 
 
     val: "101325.027383088", 
 
     long: "Pascal" 
 
     }, { 
 
     short: "psf", 
 
     val: "2116.21372690676", 
 
     long: "Pound-Force/Square-Foot" 
 
     }, { 
 
     short: "psi", 
 
     val: "14.6959793215884", 
 
     long: "Pound-Force/Square-Inch" 
 
     }, { 
 
     short: "Torr", 
 
     val: "760.000526890144", 
 
     long: "Torr" 
 
     } 
 
    ], 
 

 
    "density": [ 
 

 
     { 
 
     short: "lb/in3", 
 
     val: "1", 
 
     long: "Pound/Inch-Cubed" 
 
     }, { 
 
     short: "lb/ft3", 
 
     val: "1728.00001173627", 
 
     long: "Pound/Foot-Cubed" 
 
     }, { 
 
     short: "slug/ft3", 
 
     val: "53.707964051111", 
 
     long: "Slug/Foot-Cubed" 
 
     }, { 
 
     short: "grain/ft3", 
 
     val: "12094392.8271733", 
 
     long: "Grain/Foot-Cubed" 
 
     }, { 
 
     short: "grain/in3", 
 
     val: "6999.99988928036", 
 
     long: "Grain/Inch-Cubed" 
 
     }, { 
 
     short: "g/cm3", 
 
     val: "27.679904710267", 
 
     long: "Gram/Centimeter-Cubed" 
 
     }, { 
 
     short: "g/cup", 
 
     val: "6.548788655679", 
 
     long: "Gram/Cup" 
 
     }, { 
 
     short: "g/L", 
 
     val: "27679.9047102671", 
 
     long: "Gram/Liter" 
 
     }, { 
 
     short: "kg/cm3", 
 
     val: "0.02767990471", 
 
     long: "Kilogram/Centimeter-Cubed" 
 
     }, { 
 
     short: "kg/L", 
 
     val: "27.679904710267", 
 
     long: "Kilogram/Liter" 
 
     }, { 
 
     short: "kg/m3", 
 
     val: "27679.9047102671", 
 
     long: "Kilogram/Meter-Cubed" 
 
     } 
 
    ] 
 
    }; 
 

 
    $.each(units, function(i, obj) {  
 
     console.log(i); 
 
    $.each(obj, function(j, obj2) { 
 
     console.log(obj2.short +' : '+obj2.val+' , '+obj2.long); 
 
    }); 
 
    
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

1

единиц является объектом и давление является ключом к этому объекту

var _getPressure=units.pressure // will return value of key pressure 
_getPressure.forEach(function(item){ // use Array forEach to loop through array 
document.write('<pre>'+item.short+'--'+item.val+'</pre>') 
}) 

JSFIDDLE

Смежные вопросы