Доступ к свойству через квадратные скобки []
есть такой объект.
var o = { email: js@.ru, username: { first: 'Bob', last: 'Fox' }, dob: 12.02.2002 } var f = function (item) { return o[item]; } f('email') когда делаю так f('username.first') не работает ! решил вопрос так var f = function (item) { var item = item.split('.') var a = item.length == 1? o[item] : o[item[0]][item[1]]; return a; } может можно сделать как-то проще ? |
caetus,
:-? f('username').first |
спасибо )
а если у меня есть функция которая сортирует массив объектов по заданному свойству var arr = [{ email: js@.ru, username: { first: 'Bob', last: 'Fox' }, dob: 12.02.2002 } ]; function f(key) { arr.sort(function(a,b) { if(a[key] < b[key]) return 1; if(a[key] < b[key]) return -1; return 0; }) } f('email'); как здесь можно сделать чтоб можно было передавать 'email' и 'username.first' ??? |
caetus,
var o = { email: 'js@.ru', username: { first: 'Bob', last: 'Fox' }, dob: '12.02.2002' } var f = function (item) { var a = o[item.shift()] while (item.length && a) { a = a[item.shift()] } return a; } alert(f(['username','first'])); alert(f(['email'])); |
сортировка массива обьектов
caetus,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <script> var o = [{ email: 'js@.ru', username: { first: 'Bob', last: 'Fox' }, dob: '12.02.2002' },{ email: 'kiss@.ru', username: { first: 'Alex', last: 'Fox' }, dob: '12.02.2002' } ,{ email: 'a@.ru', username: { first: 'Mi', last: 'Fox' }, dob: '12.02.2002' }] function f(arr, key, up) { var e = function(b) { return function(a) { var c = 0; for (a = a[b[c++]]; c < b.length; c++) a = a[b[c]]; return a } }(key); return arr.sort(function(b, a) { b = e(b); a = e(a); return b > a ? up ? -1 : 1 : b < a ? up ? 1 : -1 : 0 }); }; document.write('<p>сортировка по email ⇓</p><br>') document.write(JSON.stringify(f(o,['email']))); document.write('<p>сортировка по email ⇑</p><br>') document.write(JSON.stringify(f(o,['email'], true))); document.write('<p>сортировка по first ⇓</p><br>') document.write(JSON.stringify(f(o,['username','first']))); document.write('<p>сортировка по first ⇑</p><br>') document.write(JSON.stringify(f(o,['username','first'],true))); </script> </body> </html> |
Часовой пояс GMT +3, время: 00:30. |