Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   многомерный массив (https://javascript.ru/forum/misc/77105-mnogomernyjj-massiv.html)

guerragro 25.03.2019 10:30

многомерный массив
 
Приблизительный пример
var arr = [
{country: 'Россия', emergency_count: 2, names: [ {age: 15, name: Вася}, {age: 19, name: Петя}, {age: 20, name: Олег} ] },
{country: 'Казахстан', emergency_count: 2, names: [ {age: 33, name: Василий}, {age: 19, name: Петя}, {age: 17, name: Паша} ] } ,
{country: 'Белорусия', emergency_count: 2, names: [ {age: 55, name: Олег}, {age: 15, name: Ярослав}, {age: 35, name: Игорь} ] }
.....]

Нужно оставить только те объект в которых присутствует (допустим Петя)
Или подскажите с чего мне начать.

ksa 25.03.2019 10:40

Цитата:

Сообщение от guerragro
Нужно вывести age и name с именами Петя.

Ты поиск какой-то делаешь?
Или по синтаксису не знаешь как обратиться к этому "массиво-объекту"?

Поскольку это не многомерный массив. :no:

QoreCode 25.03.2019 13:32

Зависит от проекта, но я бы советовал ознакомится с подобными инструментами... https://lodash.com

С этим инструментом код получится примерно такой:

var elements = [];

_.each(arr[0], (el)=>{
let filteredElements = _.filter(el.names[0], (element)=> element.name === "Петя"; );

if(filteredElements.length){
elements = _.union(filteredElements, elements);
}
})

console.log(elements);

И пересмотри свою структуру массива... зачем тебе массив в котором объект?))

guerragro 26.03.2019 04:34

извиняюсь подправил

рони 26.03.2019 08:37

Цитата:

Сообщение от guerragro
подправил

let arr = [
 {count: 3, emergency_count: 2, names: [{age: 15, name: "Вася"},{age: 19, name: "Петя"},{age: 20, name: "Олег"}]} ,
 {count: 3, emergency_count: 2, names: [{age: 33, name: "Василий"},{age: 19, name: "Петя"},{age: 17, name: "Паша"}]},
 {count: 3, emergency_count: 2, names: [{age: 55, name: "Олег"},{age: 15, name: "Ярослав"},{age: 35, name: "Игорь"}]}
 ]
const fn = (arr, str) => arr.filter(el => el.names.some(v => Object.values(v).includes(str)));
let ar = fn(arr, "Петя");
console.log(ar)

guerragro 26.03.2019 10:29

спасибо


Часовой пояс GMT +3, время: 19:36.