Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 28.01.2009
Сообщений: 20
1

Фильтрация обьекта по определённому параметру

22.04.2012, 00:46. Показов 648. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

Ситуация такая: создаётся обьект. Есть конструктор и всё проходит достаточно хорошо. Проблема в функции для фильтрации в строке 25.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
console.log("==Ship Test==");
    var ship = new AIS.Ship(211509880, 50.733173, 7.1108766, 173.4);
    test("Ship does not have correct mmsi", ship.mmsi === 211509880);
    test("Ship does not have correct latitude", ship.latitude === 50.733173);
    test("Ship does not have correct logitude", ship.longitude === 7.1108766);
    test("Ship does not have correct courseOverGround", ship.courseOverGround === 173.4);
     
    console.log("==ShipList Test==");
    test("ShipList missing a 'list' property", typeof(new AIS.ShipList().list) === 'object');
     
    var shipListCreator = function(){
        var shiplist = new AIS.ShipList();
        shiplist.list.push(new AIS.Ship(211509880, 50.733173, 7.1108766, 0));
        shiplist.list.push(new AIS.Ship(211509880, 40.733173, 7.1108766, 173.4));
        shiplist.list.push(new AIS.Ship(211509880, 30.733173, 7.1108766, 200.4));
        return shiplist;
    };
     
    var courseOverGroundFilter = function(ship){ return ship.courseOverGround > 180;};
    var mmsiFilter = function(ship){ return ship.mmsi === 211509881;};
    var latitudeFilter = function(ship){ return ship.latitude > 40;};
     
    var shipList = shipListCreator();
    shipList.filter(courseOverGroundFilter);
    test("Shiplist not correctly filtered on courseOverGround", shipList.list.length === 1);
     
    shipList = shipListCreator();
    shipList.filter(mmsiFilter);
    test("Shiplist not correctly filtered on mmsi", shipList.list.length === 0);
     
    shipList = shipListCreator();
    shipList.filter(latitudeFilter);
    test("Shiplist not correctly filtered on latitude", shipList.list.length === 2);
Я начал её писать, но незнаю как спросить правильный параметр для фильтрации. Чтобы это всё происходило автоматически. Как мне уточнить у атрибута filterFunction кто он(mmsi, latitude, longitude, courseOverGround)?

Javascript
1
2
3
4
5
6
7
8
9
var newlist = [];
        var laenge = this.list.length;
        for(var k=0; k< laenge;k++ )
        {
            if( this.list[k]...   < filterFunction )
                        {
                 
            }
        }
Зарание благодарен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2012, 00:46
Ответы с готовыми решениями:

Передача значения определенному параметру
Здравствуйте, хочу передать значение параметру в функции, но можно ли передать значение параметру,...

Выборка по определенному параметру
День добрый имеется такой вопрос. Допустим есть запрос который выдает Имя потребителя, его...

Сортировка записей курсора по определенному параметру?
возможна ли сортировка записей курсора, по определенному параметру?

Вывести операции по определенному параметру ММ.ГГГГ
Добрый день, нужно вывести мне отчет по формату ММ.ГГГГ. То есть январь 2016 года. Выводит все...

2
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
22.04.2012, 14:18 2
Сама фильтровочная функция должна возвращать либо true, либо false.

Javascript
1
2
3
4
5
6
7
8
9
10
11
shiplist.filter = function(filterFunction) {
    for (var i = 0; i < this.list.length; i++)
        // проверка: отвечает ли элемент фильтру
        // здесь нам уже не важно, как выглядит функция-фильтр, и какой параметр она проверяет
        // параметром для .call указываем элемент списка - он же будет контекстом для функции
        if (filterFunction.call(this.list[i])) { 
            // фильтр вернул true - да, отвечает - добавляем в новый "отфильтрованный список"
        } else {
            // фильтр вернул false - не подходит - удаляем из списка или че-то еще
        }
}
Добавлено через 4 минуты
Конкретно для вашего случая, когда функция-фильтр получает параметром ship вызов будет чуть другим:
Javascript
1
filterFunction.call(this, this.list[i])
Первый параметр может быть чем угодно - это контекст вызываемой функции, а второй - как раз тот ship, который используется в ваших фильтрах.
1
0 / 0 / 0
Регистрация: 28.01.2009
Сообщений: 20
22.04.2012, 22:19  [ТС] 3
Благодарствую всё получилось!
0
22.04.2012, 22:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2012, 22:19
Помогаю со студенческими работами здесь

Поиск даты по определенному параметру в периоде дат
Добрый день! У меня есть проблема, не могу подобрать формулу, которая могла бы проверять условие...

Выбор нужной информации из RichTextBox1.Text по определенному параметру
Есть информация (вложенный текстовой файл) - она помещена в RichTextBox1.Text. и есть второй...

Фильтрация по определенному промежутку времени
Нужно сделать отчет: количество проданных авто за определенный период времени. Вот код по...

Описать процедуру maxmin (x, y) присваивает параметру х большее из вещественных чисел x и y, а параметру у -- меньшее
Процедура maxmin (x, y) присваивает параметру х большее из вещественных чисел x и y, а параметру у...

Исключительный доступ обьекта к полям другого обьекта avr/c++
исключительный доступ обьекта к полям другого обьекта avr/c++ добрый день есть два обьекта...

Дифференцирование по параметру
Подскажите книжку или ссылку дайте, чтоб теорию почиать и практику разобрать. Чтоб практика была...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru