Всем привет, не до конца разобралась с lodash Подскажите, пожалуйста как вытащить из данных элемент
Массив
const arr = [
{
label: 'Элемент 1'
insideArr: [
{
id: 1,
}
]
},
{
label: 'Элемент 2'
insideArr: [
{
id: 2,
}
]
},
]
Нужно получить объект { id: 2 } id которого равно 2 (item.id === 2) Хотелось бы сделать это одной строкой
Функция рабочая, хотелось бы с помощью lodash как то написать в одну строку
export const getData = (arr, id) => {
const findObj = _.find(arr, { insideArr: [{ id }] })
return _.find(findObj, item => item. id === id)
}
var a = [
{ label: 'Элемент 1', insideArr: [{ id: 1 }] },
{ label: 'Элемент 2', insideArr: [{ id: 2 }, { id: 3 }] },
]
console.log(_.find(_.flatten(_.map(a, 'insideArr')), { id: 2 })) // lodash
console.log(a.flatMap(x => x.insideArr).find(x => x.id === 2)) // pure ES2019
<script src="//cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
Почему именно lodash? Так не пойдёт?
const obj = arr.find((el) => {
return el.insideArr.find((el) => {
return el.id === 2
})
})
с учетом различных возможных значений id , а так же возможности содержания в insideArr нескольких объектов то думаю такой вариант наиболее подходящий:
const arr = [
{
label: 'Элемент 1',
insideArr: [
{
id: 1,
}
]
},
{
label: 'Элемент 2',
insideArr: [
{
id: 2,
}
]
},
]
function getItemFromId(arr,id){
return arr.filter(item=> _.get(item,'insideArr',[]).find(item=>_.get(item,'id',null)===id)
)
}
console.log(getItemFromId(arr,2))
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
Возможно этот вариант Вас устроит:
_.find(arr, { 'insideArr': [{ 'id': 2 }] })
const arr = [
{
label: 'Элемент 1',
insideArr: [
{
id: 1,
}
]
},
{
label: 'Элемент 2',
insideArr: [
{
id: 2,
name: 'Abraham',
},
{
garbage: { no: 'problem' }
}
]
}
]
const res = _.find(arr, { 'insideArr': [{ 'id': 2 }] })
console.log(res)
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
источник Переданный вместо предиката объект используется для проверки на частичное совпадение с искомым объектом коллекции (как подмножество свойств искомого объекта).
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Если задать блоку min-height вместо явного height, то в IE внутренние блоки не будут заполнять его по высоте полностью; в других браузерах все нормальноЕсть...
У меня есть, допустим, карта США