如何在不使用循环的情况下从对象获取数据

时间:2018-12-20 12:37:14

标签: javascript arrays json loops

这是保存在数据库中的结构。我只想直接获取“ entityInfo ”而不使用任何循环。

let x = {
    "12": [{
            "entity": {
                "id": "40ea18e6-f898-414a-96fd-b3ef5a0eb7cd"
            },
            "startTime": "2018-12-19T06:29:59.999Z"
        },
        {
            "entity": {
                "id": "40ea18e6-f898-414a-96fd-b3ef5a0eb7cd"
            },
            "startTime": "2018-12-19T06:49:25.000Z",

        },
        {
            "entityInfo": [{
                "entityName": "acd",
                "timeSpent": 0.028055555555555556
            }]
        }
    ]
}

6 个答案:

答案 0 :(得分:3)

如果您希望12数组中的第一项具有一个entityInfo值,则可以使用find

let x = {
    "12": [{
            "entity": {
                "id": "40ea18e6-f898-414a-96fd-b3ef5a0eb7cd"
            },
            "startTime": "2018-12-19T06:29:59.999Z"
        },
        {
            "entity": {
                "id": "40ea18e6-f898-414a-96fd-b3ef5a0eb7cd"
            },
            "startTime": "2018-12-19T06:49:25.000Z",

        },
        {
            "entityInfo": [{
                "entityName": "acd",
                "timeSpent": 0.028055555555555556
            }]
        }
    ]
}

console.log(x["12"].find(a => a.entityInfo))

答案 1 :(得分:0)

您可以使用封装的map()函数。点击here。 但是您必须问自己,数组在这里是否有意义。

答案 2 :(得分:0)

let x = {
    "12": [{
            "entity": {
                "id": "40ea18e6-f898-414a-96fd-b3ef5a0eb7cd"
            },
            "startTime": "2018-12-19T06:29:59.999Z"
        },
        {
            "entity": {
                "id": "40ea18e6-f898-414a-96fd-b3ef5a0eb7cd"
            },
            "startTime": "2018-12-19T06:49:25.000Z",

        },
        {
            "entityInfo": [{
                "entityName": "acd",
                "timeSpent": 0.028055555555555556
            }]
        }
    ]
}
// will return a value if the entityInfo object exists
var ans = x["12"].filter((val)=>{return val.entityInfo})[0]
console.log(ans)

答案 3 :(得分:0)

如果只有一个entityInfo,则可以使用以下命令获取具有“ entityInfo”属性的第一个元素。

x["12"].find(i => i.entityInfo)

答案 4 :(得分:0)

使用Object.values获取值,然后使用find查找所有实体信息对象

var x = {
    "12": [{
            "entity": {
                "id": "40ea18e6-f898-414a-96fd-b3ef5a0eb7cd"
            },
            "startTime": "2018-12-19T06:29:59.999Z"
        },
        {
            "entity": {
                "id": "40ea18e6-f898-414a-96fd-b3ef5a0eb7cd"
            },
            "startTime": "2018-12-19T06:49:25.000Z",

        },
        {
            "entityInfo": [{
                "entityName": "acd",
                "timeSpent": 0.028055555555555556
            }]
        }
    ]
};

console.log(Object.values(x).flat().find(el => el.entityInfo));

答案 5 :(得分:0)

对此问题有多种方法和可能的解决方案。 您可以使用mapfilterreducefindforEach。 但是每个内部元素的循环,另一种方法是,如果您知道EntityInfo在x [“ 12”]中的位置,并且您想安全地读取它。然后,您可以使用these之类的实用程序。