Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.03.2025, 17:30
Аспирант
Отправить личное сообщение для Volonter Посмотреть профиль Найти все сообщения от Volonter
 
Регистрация: 18.01.2011
Сообщений: 96

Удалить из массива А числа, которые есть в полях объекта В
Все привет, подскажите, как сделать следующе. Есть:
let period = {
        id: Math.floor(Math.random() * 1000000),
        date: new Date().toISOString(),
        unit: {1: {a: '', c: [16,9,3,11,30], p: ''}, 2: {a: '', c: [5,12,8,21,33], p: ''}, 3: {a: '', c: [6,13,10,22,34], p: ''}}
    };

    let num = [16,9,3,11,30, 5,12,8,21,33, 6,13,10,22,34,8,69,25,47,72,18];

    function checkPeriod(){
        // Здесь нужно получить все числа из всех объектов unit.c 
        // и удалить их из массива num
    }

В функции checkPeriod() нужно проверить все числа, которые есть во всех массивах unit.c и удалить эти числа из массива num
Ответить с цитированием
  #2 (permalink)  
Старый 28.03.2025, 19:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,140

уникальные элементы массива
Volonter,

let period = {
            id: Math.floor(Math.random() * 1000000),
            date: new Date().toISOString(),
            unit: {
                1: {
                    a: '',
                    c: [16, 9, 3, 11, 30],
                    p: ''
                },
                2: {
                    a: '',
                    c: [5, 12, 8, 21, 33],
                    p: ''
                },
                3: {
                    a: '',
                    c: [6, 13, 10, 22, 34],
                    p: ''
                }
            }
        };

        let num = [16, 9, 3, 11, 30, 5, 12, 8, 21, 33, 6, 13, 10, 22, 34, 8, 69, 25, 47, 72, 18];

        function checkPeriod(num, { unit }) {
            let all = [];
            for (let i in unit) {
                all.push(...unit[i].c)
            };
            for (let i = num.length - 1; i ; i--) {all.includes(num[i]) && num.splice(i, 1)}
            return num
        }
        console.log(checkPeriod(num, period)) //[ 69, 25, 47, 72, 18];

Последний раз редактировалось рони, 28.03.2025 в 19:08.
Ответить с цитированием
  #3 (permalink)  
Старый 29.03.2025, 16:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,249

Предложу такой вариант...

let period = {
	id: Math.floor(Math.random() * 1000000),
	date: new Date().toISOString(),
	unit: {
		1: {a: '', c: [16,9,3,11,30], p: ''}, 
		2: {a: '', c: [5,12,8,21,33], p: ''}, 
		3: {a: '', c: [6,13,10,22,34], p: ''}
	}
};

let num = [16,9,3,11,30, 5,12,8,21,33, 6,13,10,22,34,8,69,25,47,72,18];

function checkPeriod(){
	const s = new Set(Object.values(period.unit).flatMap(o => o.c))
	let i = 0
	num.forEach((v, _, a) => !s.has(v) ? a[i++] = v : 0)
	num.length = i
}

checkPeriod()
alert(num)
Ответить с цитированием
  #4 (permalink)  
Старый Вчера, 13:19
Аспирант
Отправить личное сообщение для Volonter Посмотреть профиль Найти все сообщения от Volonter
 
Регистрация: 18.01.2011
Сообщений: 96

рони, ksa
Спасибо!!!
Оба варианта нравятся))
Ответить с цитированием
  #5 (permalink)  
Старый Сегодня, 09:47
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,582

Сообщение от рони Посмотреть сообщение
function checkPeriod(num, { unit }) {
А вот это - { unit } - это что?, умные параметры?
Не знал что их можно совмещать с обычными, в доке нет этого
Ответить с цитированием
  #6 (permalink)  
Старый Сегодня, 11:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,140

micscr,
Получение полей объекта-параметра функции
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть ли функция, делающая однозн. числа двузначными?) Т.е. "1" => "01" FirstFrost Общие вопросы Javascript 14 08.02.2012 17:38
Как удалить повторные элементы из массива? YISHIMITSY Общие вопросы Javascript 1 04.05.2010 00:04
Как удалить элемент массива? velo Общие вопросы Javascript 2 05.02.2010 15:58
есть ли стандартная функция вывода сожержимого массива что то вроди print_r в PHP??? mazovski Events/DOM/Window 4 20.08.2009 12:52
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37