仅当组中的另一个键名匹配时,如何从JSON API中提取键值?

时间:2018-06-04 21:41:05

标签: javascript jquery

所以这是JSON文件的最新内容:

{
  "page": 1,
  "total_pages": 10,
  "listings": [
    {
      "name": "Bob",
      "occu": "Entry",
      "team": "Blue",
      "sec": 3,
      "days": 16
    },
    {
      "name": "Tom",
      "occu": "Advance",
      "team": "Main",
      "sec": 1,
      "days": 23
    },

This continues on with hundreds of other entries...

如何提取"天"的价值?只有"名称"以汤姆为例。

很抱歉,如果这是一个原始问题,我刚刚开始开发和即时开发一个快速项目,这将有助于我的本地运动团队,而且我的脚本或API非常先进。感谢

3 个答案:

答案 0 :(得分:1)

提取"天"的价值只有"名称"汤姆需要filter 'Tom'名称然后map days



let listings = [
    {
      "name": "Bob",
      "occu": "Entry",
      "team": "Blue",
      "sec": 3,
      "days": 16
    },
    {
      "name": "Tom",
      "occu": "Advance",
      "team": "Main",
      "sec": 1,
      "days": 23
    },
    {
      "name": "Tom",
      "occu": "Advanddce",
      "team": "Maiddn",
      "sec": 1,
      "days": 55
    }
];

const result = listings.filter(listing=> listing.name=="Tom").map(listing => listing.days);
console.log(result);




答案 1 :(得分:0)

您可以创建一个这样的函数,它循环遍历对象的数组(listings):

getDaysFromListings = (listings, name) => {
    for (let listing of jsonObj.listings) {
        if (listing.name === name) {
            return listing.days;
        }
    }

    // didn't find 'Tom', return empty string
    return '';
}

然后,像这样调用你的函数:

// assuming your entire json object is stored in a variable called "json"
let days = getDaysFromListings(json.listings, 'Tom');

由于您的变量days来自string,因此您可以将其转换为number +days

修改:要将变量days添加到html,首先,我们假设您要将文本添加到如下所示的div中:

<div id="target"></div>

您可以使用javascript在此处添加days变量,如下所示:

// assume you already stored the data in variable
document.getElementById('target').innerHTML = days;

注意:您必须在加载上面的html div后加载此javascript

答案 2 :(得分:0)

由于有很多方法可以实现这一点并且确定这可能不是最好的方法,因此一种方法是使用Array.prototype.find https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

var array1 = [{
      "name": "Bob",
      "occu": "Entry",
      "team": "Blue",
      "sec": 3,
      "days": 16
    }, {
      "name": "Tom",
      "occu": "Advance",
      "team": "Main",
      "sec": 1,
      "days": 23
    }];

var found = array1.find(function(element) {
  return element.name === "Bob";
});

console.log(found.days);