javascript - 从数组中返回与键 :value pair of an object nested in the object I need to return 匹配的对象

标签 javascript arrays node.js express

所需状态

我试图从与特定值匹配的数组中返回一个对象,但我遇到了一些问题,因为该数组包含嵌套在另一个对象中的对象。我想返回整个对象,但我需要搜索的值位于嵌套对象内部。

例如,我尝试根据键:值对“name”:“Kills”的值返回整个对象

 {
    "metadata": {
        "key": "kills",
        "name": "Kills",
        "isReversed": false
    },
    "value": 1364,
    "displayValue": "1,364"
}

数组格式

let stats = [
            {
                "metadata": {
                    "key": "kills",
                    "name": "Kills",
                    "isReversed": false
                },
                "value": 1364,
                "displayValue": "1,364"
            },
            {
                "metadata": {
                    "key": "score",
                    "name": "Score",
                    "isReversed": false
                },
                "value": 413743,
                "displayValue": "413,743"
            },
            {
                "metadata": {
                    "key": "matchesPlayed",
                    "name": "Matches Played",
                    "isReversed": false
                },
                "value": 2160,
                "displayValue": "2,160"
            }

        ]

当前代码不起作用

我不打算使用这种结构的代码,任何有效的解决方案对我来说都很棒,但我需要它成为一个可以重用的函数。

function getStatsFields(value, statsSegment){
  console.log('getStatsFields ran', statsSegment.stats[0].metadata.name);

  console.log('statsSegment.stats.length', statsSegment.stats.length);
  var filteredStats = []
  for(var i=0; i < statsSegment.stats.length; ++i){
    const killsKey = Object.keys(statsSegment.stats[i].metadata.name)
    console.log('killsKey', killsKey);
    filteredStats = statsSegment.stats.filter(val => val[killsKey] === value)
    console.log('filteredStats before if', filteredStats);
    if(filteredStats.length){
      console.log('filteredStats[i]', filteredStats[i]);

      return filteredStats[i];
    }
  }

}

任何帮助将不胜感激!

最佳答案

尝试

stats.find(x=> x.metadata.name=="Kills");

let stats= [
            {
                "metadata": {
                    "key": "kills",
                    "name": "Kills",
                    "isReversed": false
                },
                "value": 1364,
                "displayValue": "1,364"
            },
            {
                "metadata": {
                    "key": "score",
                    "name": "Score",
                    "isReversed": false
                },
                "value": 413743,
                "displayValue": "413,743"
            },
            {
                "metadata": {
                    "key": "matchesPlayed",
                    "name": "Matches Played",
                    "isReversed": false
                },
                "value": 2160,
                "displayValue": "2,160"
            }

        ]
        
  let r= stats.find(x=> x.metadata.name=="Kills");
  console.log(r);

关于javascript - 从数组中返回与键 :value pair of an object nested in the object I need to return 匹配的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54931709/

相关文章:

node.js - 将一个 node.js 服务器 "talk"设置为另一个的最佳方法是什么?

javascript - Threejs 2000 纹理瓶颈

javascript - 在 TypeScript 中分配 DOM 对象

java - 检查两个数组android之间的相同值

javascript - 数组中的空洞与未定义和映射函数

arrays - 如何在 TypeScript 中实例化一个包含字符串的数组?

javascript - express 中出现意外的 "write after end"错误

javascript - Node.js 中的数据库查询(PHP 风格)

javascript - js : sort and rearrange array of object

javascript - 如何在reactjs中用 anchor 标记替换字符串中的文本