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

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

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

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

Ситуация такая: создаётся обьект. Есть конструктор и всё проходит достаточно хорошо. Проблема в функции для фильтрации в строке 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.04.2012, 00:46
Ответы с готовыми решениями:

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

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

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

2
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
22.04.2012, 14:18
Сама фильтровочная функция должна возвращать либо 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  [ТС]
Благодарствую всё получилось!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.04.2012, 22:19
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru