使用javascript中的键检索对象

时间:2018-10-12 23:00:04

标签: javascript

我有以下对象,如果我只想检索足球,那么我将足球放置如下, sports['soccer']没有带来。

我想知道我在这里想念什么吗?

sports = [] ; 

sports = [{
    "soccer": {
        "type": "foot",
        "player": 11
    },
    "basketball": {
        "type": "hand",
        "player": 5
    }
}]

5 个答案:

答案 0 :(得分:3)

您当前的代码使用单个对象创建一个数组。一种解决方案是改为创建一个对象:

sports = {
    "soccer": {
        "type": "foot",
        "player": 11
    },
    "basketball": {
        "type": "hand",
        "player": 5
    }
}

现在您可以使用sports.soccersports['soccer']访问足球数据。

如果您确实想要对象数组,则首先需要对数组进行下标才能获得第一个对象:

sports[0].soccer

sports[0]['soccer']

答案 1 :(得分:0)

sports = [] ; sports = { "soccer": { "type": "foot", "player": 11 }, "basketball": { "type": "hand", "player": 5 } } 是一个内部包含对象的数组。

如果您这样设置:

sports['soccer']

然后您将可以呼叫sports.soccer甚至是for(i=0; i < sports.length; i++) { if("soccer" in sports[i]){ console.log(sports[i].soccer.type); console.log(sports[i].soccer.player); } }

或者,如果您需要它保留一个数组,那么您需要做更多的工作。 这样的事情应该可以解决问题。

name: 'mydomain.com',

console.logs代表您想要使用值做什么

答案 2 :(得分:0)

我认为您确实需要重申一下javascript的基础知识。

在JS中,我们可以使用文字语法即时创建数据结构。例如:

let normalArr = new Array();
let literalArr = [];

let normalObj = new Object();
let literalObj = {};

使用文字语法创建数组和对象时,可以动态地使用具有元素和对象的属性初始化数组。这就是您的示例中确实发生的情况:

sports = [{
    "soccer": {
        "type": "foot",
        "player": 11
    },
    "basketball": {
        "type": "hand",
        "player": 5
    }
}];

可以通过以下方式分解代码:

  1. 您使用数组文字语法创建了一个存储在体育运动变量中的数组(动态创建了一个数组)。
  2. 您使用对象字面量语法创建了数组的1个元素(动态创建对象)
  3. 此对象(位于数组内部)具有2个属性,足球和篮球,它们也是使用对象文字语法创建的对象。

要访问其中一个对象,您需要执行以下操作:

const sports = [{
    "soccer": {
        "type": "foot",
        "player": 11
    },
    "basketball": {
        "type": "hand",
        "player": 5
    }
}];

// accessing the first element of the sports array
console.log(sports[0].soccer);
console.log(sports[0].basketball);

答案 3 :(得分:0)

正如其他人指出的那样,您有一个对象数组,而不是单个对象。您可以使用find()方法来查找具有soccer属性的元素,然后访问该属性。

var soccer = sports.find(s => 'soccer' in s)['soccer'];

答案 4 :(得分:-1)

您可以这样做。

sports = [] ; 

sports = [{
    "soccer": {
        "type": "foot",
        "player": 11
    },
    "basketball": {
        "type": "hand",
        "player": 5
    }
}]

const getSport = (sport) => {
  for(var i in sports[0]) {
    if (i === sport) {
      return sports[0][i]
    }
  }
};
console.log(getSport('soccer'));
console.log(getSport('basketball'));