Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.09.2024, 18:34
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

Сгруппировать IP и дату
Добрый вечер, нужна помощь в группировке даты с IP

let getIP = `
17.11.2023 06:27:17	213.151.11.164
17.11.2023 08:19:56	213.151.20.77
17.11.2023 10:45:44	213.151.20.77`

let userIp = getIP .match(/\b(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/g)
let dateTime = getIP .match(/\d{2}\.\d{2}\.\d{4}\s\d{1,2}:\d{2}:\d{2}|\d{2}\.\d{2}\.\d{4}\s\d{1,2}:\d{2}|\d{2}\.\d{2}\.\d{4}\s\d{1,2}:\d{2}:\d{2}\s\d{3}\.\d{3}\.\d{3}\.\d{3}/g)


//Выбираем уникальные IP
const uniqueArray = [...new Set(userIp)];
            uniqueArray.forEach(async(ipList) => {
console.log(ipList)
 /*на выходе получаем Уникальные IP*/

/* Получаем
[213.151.11.164,
213.151.20.77]
*/

/* Что должно получаться:
 {ip:213.151.11.164,
   date: [17.11.2023 08:19:56, 17.11.2023 10:45:44]}
*/

})

Последний раз редактировалось SpaceAlarm, 03.09.2024 в 18:37.
Ответить с цитированием
  #2 (permalink)  
Старый 03.09.2024, 19:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

SpaceAlarm,
let getIP = `
17.11.2023 06:27:17 213.151.11.164
17.11.2023 08:19:56 213.151.20.77
17.11.2023 10:45:44 213.151.20.77`;
        let userIp = {};
        let uniqueArray = [];
        let arr = getIP.match(/\S+/gm);
        for (let i = 0; i < arr.length; i++) {
            let data = `${arr[i]} ${arr[++i]}`;
            let ip = arr[++i];
            if (ip in userIp) userIp[ip].date.push(data);
            else {
                let obj = {
                    ip,
                    date: [data]
                };
                userIp[ip] = obj;
                uniqueArray.push(obj)

            }
        }
        console.log(uniqueArray)
Ответить с цитированием
  #3 (permalink)  
Старый 03.09.2024, 19:46
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

Спасибо большое, перепробовал много вариантов, но желаемого результата так и не достиг....
Ответить с цитированием
  #4 (permalink)  
Старый 03.09.2024, 20:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Сообщение от SpaceAlarm
перепробовал много вариантов, но желаемого результата так и не достиг....
Такой еще вариант...

const getIP = `
17.11.2023 06:27:17 213.151.11.164
17.11.2023 08:19:56 213.151.20.77
17.11.2023 10:45:44 213.151.20.77`
const o = getIP.split('\n').reduce((o, s) => {
	if (s) {
		const a = s.split(' ')
		o[a[2]] ??= []
		o[a[2]].push(a.slice(0, 2).join(' '))
	}
	return o
}, {})
const a = Object.entries(o).map(([ip, date]) => ({ip, date}))
alert(JSON.stringify(a, true, 2))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поменять дату создания мультимедиа? mik888em Events/DOM/Window 0 15.02.2022 13:24
Заменить слово на дату sitegroup Общие вопросы Javascript 2 11.09.2021 13:22
Как задать дату отсчета таймера? Exhumed Элементы интерфейса 2 21.06.2016 14:49
Нужно получить дату клиента BotPro Общие вопросы Javascript 4 31.05.2016 10:39
Преобразование строки в дату. Serious2008 Общие вопросы Javascript 5 28.11.2012 14:22