【问题标题】:Using javascript to get nested json into a comma separated list [duplicate]使用javascript将嵌套的json放入逗号分隔的列表中[重复]
【发布时间】:2017-02-07 17:18:24
【问题描述】:

这就是我所拥有的……

[{
  "programName": "Testing 102",
  "recommendedComparisons": [{
    "programName": "Testing 101",
    "id": 2
  }, {
    "programName": "Testing 401",
    "id": 4
  }],
  "id": 1,
  "programId": 3
}, {
  "programName": "Testing 101",
  "recommendedComparisons": [{
    "programName": "Testing 102",
    "id": 3
  }],
  "id": 9,
  "programId": 2
}]

我想要的是两个推荐比较列表。

Testing 101, Testing 401Testing 102

我相信一定有简单的方法。

【问题讨论】:

  • 请显示预期结果以及您尝试过的代码
  • 我不明白。仅 JSON.parse() 有什么问题?
  • @RayfenWindspear 没什么,Jean 根本没有研究过这个话题,只是直接去找答案。这是您在学习 JSON 时首先要学习如何处理的事情之一。

标签: javascript jquery arrays json csv


【解决方案1】:
  1. 使用map 函数可以转换对象。

    var recommendedComparisons = data.map(x => x.recommendedComparisons.map(x=>x.programName));

  2. 使用Destructuring 获取 2 个结果列表。

    var [firstList,secondList] = recommendedComparisons;

var data = [{
  "programName": "Testing 102",
  "recommendedComparisons": [{
    "programName": "Testing 101",
    "id": 2
  }, {
    "programName": "Testing 401",
    "id": 4
  }],
  "id": 1,
  "programId": 3
}, {
  "programName": "Testing 101",
  "recommendedComparisons": [{
    "programName": "Testing 102",
    "id": 3
  }],
  "id": 9,
  "programId": 2
}];

var recommendedComparisons = data.map(x => x.recommendedComparisons.map(x=>x.programName));

var [firstList,secondList] = recommendedComparisons;
console.log(firstList);
console.log(secondList);

【讨论】:

    【解决方案2】:
    var data = [{
      "programName": "Testing 102",
      "recommendedComparisons": [{
        "programName": "Testing 101",
        "id": 2
      }, {
        "programName": "Testing 401",
        "id": 4
      }],
      "id": 1,
      "programId": 3
    }, {
      "programName": "Testing 101",
      "recommendedComparisons": [{
        "programName": "Testing 102",
        "id": 3
      }],
      "id": 9,
      "programId": 2
    }];
    
    var result = data.map(function(item) {
        return item.recommendedComparisons.map(function(comp) {
            return comp.programName;
        });
    });
    

    【讨论】:

      【解决方案3】:

      您正在寻找的是 Array 对象的 ma​​p 函数。

      您正在寻找推荐比较程序名称。为此,您需要 1 个 map 函数来进行比较,然后您需要再次调用 map,并在该函数内部调用子数组上的 map 以返回程序名称。

      既然你提到了逗号分隔列表,最好不要返回数组本身。而是创建一个新字符串,并用逗号连接子数组,并在其后附加一个新行。

      我相信这就是你要找的东西

      var array = [{"programName":"Testing 102","recommendedComparisons":[{"programName":"Testing 101","id":2},{"programName":"Testing 401","id":4}],"id":1,"programId":3},{"programName":"Testing 101","recommendedComparisons":[{"programName":"Testing 102","id":3}],"id":9,"programId":2}]
      
      var results = array.map(function(a) { return a.recommendedComparisons
        }).map(function(b) {
            return b.map(function(c) {
                return c.programName;
            });
        });
      
      var str = "";
      
      for (var i = 0; i < results.length; i++) {
          str += results[i].join(',') + "\n"
      }
      
      console.log(str);

      【讨论】:

        【解决方案4】:

        我还不能对此进行测试,但我很确定这是正确的。我现在就测试一下。

        const list = [
          {
            "programName":"Testing 102",
            "recommendedComparisons":[
              { "programName": "Testing 101", "id":2 },
              { "programName": "Testing 401", "id":4 }
            ],
            "id":1,
            "programId":3
          },
          {
            "programName":"Testing 101",
            "recommendedComparisons":[
               {"programName":"Testing 102","id":3}
            ],
            "id":9,
            "programId":2
          }
        ];
        
        let listOfComparisonLists = [];
        
        list.map((program) => {
          const programNames = program.recommendedComparisons.map((comp) => comp.programName);
        
          listOfComparisonLists.push(programNames);
        });
        
        console.log(listOfComparisonLists); // [['Testing 104', 'Testing 401'],['Testing 102']]
        

        【讨论】:

        • 三个小时后...我们确认您的代码是否像宣传的那样工作?
        • 是的,它有效。我不小心放了append 而不是push
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-02
        • 2020-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多