Как сопоставить этот массив объектов, чтобы получить новый массив гео для каждого элемента продукта? - PullRequest
0 голосов
/ 03 августа 2020

Мне нужно получить новый массив из этого объекта products, всех гео внутри свойства itmes. как я могу это сделать?

"products":[{"code":"realestate","currency":"ILS","percentage":1,"totalWorth":150000,"totalYieldPer":0,"items":[{"name":"הבית שלנו בחיפה ","currency":"NIS","geo":"ישראל","worth":150000,"portfolioPer":0.022,"yield":0,"yieldPer":0},{"name":"הבית שלנו בארהבב","currency":"USD","geo":"ארהב","worth":5261700,"portfolioPer":0.761,"yield":0,"yieldPer":0},{"name":"דירהב אירופה","currency":"NIS","geo":"אירופה","worth":5261700,"portfolioPer":0.761,"yield":0,"yieldPer":0}]}]}

1 Ответ

0 голосов
/ 03 августа 2020

Вот решение с использованием Array.prototype.flatMap и Array.prototype.map:

const obj = {
    "products": [{
            "code": "realestate",
            "currency": "ILS",
            "percentage": 1,
            "totalWorth": 150000,
            "totalYieldPer": 0,
            "items": [{
                    "name": "הבית שלנו בחיפה ",
                    "currency": "NIS",
                    "geo": "ישראל",
                    "worth": 150000,
                    "portfolioPer": 0.022,
                    "yield": 0,
                    "yieldPer": 0
                }, {
                    "name": "הבית שלנו בארהבב",
                    "currency": "USD",
                    "geo": "ארהב",
                    "worth": 5261700,
                    "portfolioPer": 0.761,
                    "yield": 0,
                    "yieldPer": 0
                }, {
                    "name": "דירהב אירופה",
                    "currency": "NIS",
                    "geo": "אירופה",
                    "worth": 5261700,
                    "portfolioPer": 0.761,
                    "yield": 0,
                    "yieldPer": 0
                }
            ]
        }, {
            "items": [{ "geo": "Some other geo" }]
        }
    ]
};

const result = obj.products.flatMap(({ items }) => items).map(({ geo }) => geo);

console.log(result);

Я предполагаю, что ваш исходный объект содержит более одного элемента в массиве products, поэтому я добавил один для примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...