Доступ к свойству через квадратные скобки []
есть такой объект.
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, время: 19:32. |