首页 > 解决方案 > 如果对象子对象包含某个字符串(JavaScript),则从对象子对象获取数据

问题描述

我从 API(使用 JavaScript,API 是 alphavantage.co)获取一些数据,以获得一年的股票股息。API 每月给我分红。所以我需要做的是总结子对象的红利,如果它们包含“2019”。

API 如下所示:

"Monthly Adjusted Time Series": {
        "2019-12-31": {
            "1. open": "37.4800",
            "2. high": "39.4320",
            "3. low": "36.9050",
            "4. close": "38.9750",
            "5. adjusted close": "38.9750",
            "6. volume": "493073245",
            "7. dividend amount": "0.0000"
        },
        "2019-11-29": {
            "1. open": "38.9500",
            "2. high": "39.7000",
            "3. low": "36.4000",
            "4. close": "37.3800",
            "5. adjusted close": "37.3800",
            "6. volume": "605847809",
            "7. dividend amount": "0.0000"
        },
... And so on until year 2000

我知道我必须循环它,但我如何检查孩子是否包含 2019?所以它不循环其他年份?

标签: javascriptstringloops

解决方案


您需要过滤掉不匹配的值,然后减少结果。

Object.entries(monthlyAdjustedTimeSeries)
    // Remove items that don't contain 2019
    .filter(([k]) => k.includes("2019-"))
    // Get just the values
    .map(([_, v]) => parseFloat(v["7. dividend amount"]))
    // Sum
    .reduce((ac, v) => ac + v, 0);

推荐阅读