Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.06.2015, 16:33
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 23.09.2014
Сообщений: 197

Доступ к свойству через квадратные скобки []
есть такой объект.

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;
}


может можно сделать как-то проще ?
Ответить с цитированием
  #2 (permalink)  
Старый 30.06.2015, 16:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

caetus,

f('username').first
Ответить с цитированием
  #3 (permalink)  
Старый 30.06.2015, 17:34
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 23.09.2014
Сообщений: 197

спасибо )
а если у меня есть функция которая сортирует массив объектов по заданному свойству
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' ???
Ответить с цитированием
  #4 (permalink)  
Старый 30.06.2015, 18:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

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']));
Ответить с цитированием
  #5 (permalink)  
Старый 30.06.2015, 20:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

сортировка массива обьектов
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 &dArr;</p><br>')
document.write(JSON.stringify(f(o,['email'])));
document.write('<p>сортировка по email &uArr;</p><br>')
document.write(JSON.stringify(f(o,['email'], true)));
document.write('<p>сортировка по first &dArr;</p><br>')
document.write(JSON.stringify(f(o,['username','first'])));
document.write('<p>сортировка по first &uArr;</p><br>')
document.write(JSON.stringify(f(o,['username','first'],true)));
 </script>
</body>

</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструктор, не могу получить доступ к свойству класса voodoo_dn Общие вопросы Javascript 5 17.12.2014 18:07
Как удалить из строки квадратные скобки NapalmRain Events/DOM/Window 4 09.12.2014 12:08
Убрать на конце строки квадратные скобки hrundel Общие вопросы Javascript 2 20.04.2014 14:09
Обращение к свойству объекта через квадратные скобки. Почему? koderman Общие вопросы Javascript 2 06.02.2014 02:48
Доступ к тегам через точку Esigns Events/DOM/Window 2 27.09.2012 15:16