
28.03.2025, 17:30
|
Аспирант
|
|
Регистрация: 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
|
|

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.
|
|

29.03.2025, 16:57
|
 |
CacheVar
|
|
Регистрация: 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)
|
|

Вчера, 13:19
|
Аспирант
|
|
Регистрация: 18.01.2011
Сообщений: 96
|
|
рони, ksa
Спасибо!!!
Оба варианта нравятся))
|
|

Сегодня, 09:47
|
 |
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,582
|
|
Сообщение от рони
|
function checkPeriod(num, { unit }) {
|
А вот это - { unit } - это что?, умные параметры?
Не знал что их можно совмещать с обычными, в доке нет этого
|
|

Сегодня, 11:29
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,140
|
|
|
|
|
|