繁体   English   中英

Javascript 获取嵌套 JSON object 的密钥?

[英]Javascript get key of nested JSON object?

我有一个 json 响应,如下图所示。 我想从 json 获取所有日期并存储在一个数组中。

  function buyOption(){
      var ticker = document.getElementById('ticker').value;

    fetch("https://stock-and-options-trading-data-provider.p.rapidapi.com/options/JPM", {
    
    .then(response => response.json())
    .then(data => {
      dataset = data;
      console.log(dataset['options'])
      loadTable()
      
    })

    .catch(err => {
      console.log(err);
    });


    function loadTable(){
      expiration_dates = []
      dates = dataset['options']
      // console.log(JSON.parse(dates))
      
      var keys = [];
        for(var k in dates) keys.push(k);
      console.log(keys)// returns ["0","1","2",3","5",6","9","10","11"]
  
      console.log(dates[0].value) // returns undefined 
      
    }


}
  
  

在此处输入图像描述

目标是让 expire_dates = ["2020-08-21","2020-08-28"]

你可以试试这个。 这将只给您expiration dates

 var obj = { "options": [{ "10-2-2001": "", "someOtherProp": "" }, { "20-2-2001": "", "someOtherProp": "" }] } var expDates = obj.options.map(o=>Object.keys(o)[0]) console.log(expDates)

参考:

数组.map()

Object.keys()

一个简单的数组 map 应该可以解决问题并使用 Object.keys() 数组从数据数组中的每个 object 获取第一个密钥

 const dates = dataset['options'].map(o => Object.keys(o)[0]) console.log(dates)
 <script> const dataset = { options: [{ '2013-12-22': { puts: [], calls: [] }}, {'2013-02-15': { puts: [], calls: [] }}, { '2018-01-01': { puts: [], calls: [] }} ] } </script>

尝试这个

 let result = dataSet.options.map(x => Object.keys(x)); console.log(result.flat(1))

就像是

const options=dates.options.map(o=>
  Object.keys(o).filter(k=>k.match(/^2\d{3}-\d{2}-\d{2}$/))[0]);

这个想法是遍历所有选项,获取每个对象的所有键并过滤掉与正则表达式匹配的键,这是一种日期格式,从2开始。 从过滤后的键数组中,我只对第一个元素( [0] )感兴趣。

for(k in dates) {
    keys.push((v=>{
        for(let i in v) return i;
    })(dates[k]));
}

试试看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM