从数组中的子对象中提取数据

huangapple go评论94阅读模式
英文:

Pull data from sub object within array

问题

我看不出我在这里做错了什么,但我在控制台中得到了“undefined”。希望您可以在代码片段中看到,我传递了一些JSON数据。这实际上是2个商店的数据,并且每个商店都有一些交易。我可以取回顶层数据,但我很难从交易行级别取回数据。

每当我尝试引用事务行中的某些内容时,就会出现问题。有人可以指导我如何引用数组的这一部分吗?

非常感谢

  1. /// 假的JSON数据,已字符串化并放在顶部 ///
  2. const inputData = "[{\r\n\t\t\"transaction\": 1,\r\n\t\t\"store\": 1,\r\n\t\t\"transactionLines\": [{\r\n\t\t\t\t\"transactionId\": 1,\r\n\t\t\t\t\"lineId\": 3,\r\n\t\t\t\t\"lineValue\": 25\r\n\t\t\t},\r\n\r\n\t\t\t{\r\n\t\t\t\t\"transactionId\": 1,\r\n\t\t\t\t\"lineId\": 2,\r\n\t\t\t\t\"lineValue\": 50\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"transactionId\": 1,\r\n\t\t\t\t\"lineId\": 1,\r\n\t\t\t\t\"lineValue\": 100\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t\"transaction\": 2,\r\n\t\t\"store\": 2,\r\n\t\t\"transactionLines\": [{\r\n\t\t\t\t\"transactionId\": 1,\r\n\t\t\t\t\"lineId\": 2,\r\n\t\t\t\t\"lineValue\": 50\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"transactionId\": 1,\r\n\t\t\t\t\"lineId\": 1,\r\n\t\t\t\t\"lineValue\": 100\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n]";
  3. const input = JSON.parse(inputData);
  4. var total = 0;
  5. // 第一个“for循环”遍历输入数据并列出交易
  6. for (let i = 0; i < input.length; i++) {
  7. console.log(input[i].transaction);
  8. // 第二个“for循环”在交易循环内部。它遍历上面循环的交易数据并列出交易
  9. for (let j = 0; j < input[i].transactionLines.length; j++) {
  10. // 通过将行值添加到现有总值来增加总值
  11. total = total + input[i].transactionLines[j].lineValue;
  12. console.log("Transaction ID = " + input[i].transaction + " 循环 x " + j + ": 新总值 = " + total);
  13. }
  14. }

希望这能帮助您解决问题。

英文:

I can't see what I'm doing wrong here but I'm getting "undefined" back in my console.
Hopefully you can see in the snippet I am passing in some JSON data. This effectively 2 stores worth of data and against each store there are a few transactions. I can pull back the top level data but I'm struggling to pull back data from the transaction line level.

Its whenever I try to reference something from within my transaction lines. Can anyone point me in the right direction as to how I'm referencing that part of my array?

Many thanks

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

  1. ///Dummy JSON Data Stringified and put in the top /////////
  2. const inputData= &quot;[{\r\n\t\t\&quot;transaction\&quot;: 1,\r\n\t\t\&quot;store\&quot;: 1,\r\n\t\t\&quot;transactionLines\&quot;: [{\r\n\t\t\t\t\&quot;transactionId\&quot;: 1,\r\n\t\t\t\t\&quot;lineId\&quot;: 3,\r\n\t\t\t\t\&quot;lineValue\&quot;: 25\r\n\t\t\t},\r\n\r\n\t\t\t{\r\n\t\t\t\t\&quot;transactionId\&quot;: 1,\r\n\t\t\t\t\&quot;lineId\&quot;: 2,\r\n\t\t\t\t\&quot;lineValue\&quot;: 50\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\&quot;transactionId\&quot;: 1,\r\n\t\t\t\t\&quot;lineId\&quot;: 1,\r\n\t\t\t\t\&quot;lineValue\&quot;: 100\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t\&quot;transaction\&quot;: 2,\r\n\t\t\&quot;store\&quot;: 2,\r\n\t\t\&quot;transactionLines\&quot;: [{\r\n\t\t\t\t\&quot;transactionId\&quot;: 1,\r\n\t\t\t\t\&quot;lineId\&quot;: 2,\r\n\t\t\t\t\&quot;lineValue\&quot;: 50\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\&quot;transactionId\&quot;: 1,\r\n\t\t\t\t\&quot;lineId\&quot;: 1,\r\n\t\t\t\t\&quot;lineValue\&quot;: 100\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n]&quot;
  3. const input = JSON.parse(inputData);
  4. var total = 0;
  5. ////// First &quot;For Loop&quot; goes through input data /////
  6. ////// and lists transactions ///////////////////////
  7. for(let i=0;i&lt;input.length;i++){
  8. console.log(input[i].transaction);
  9. ///////// 2nd &quot;For Loop&quot; is inside the transaction loop. ////////
  10. ///////// This goes through transaction data from the above loop /
  11. ///////// and lists transactions ///////////////////////////////
  12. for(let j=0;j&lt;input[i].transactionLines.length;j++){
  13. ///////// Increase the total by adding the line value to the /////
  14. ///////// existing total ////////////////////////////////////////
  15. total = total+input[i].lineValue
  16. console.log(input[i].transactionLines.lineId);
  17. console.log(&quot;Transaction ID = &quot;+input[i].transaction+&quot; loop x &quot;+j+&quot;: New Total = &quot;+input[i].transactionLines.transactionId);
  18. }
  19. }

<!-- language: lang-html -->

  1. &lt;div&gt;
  2. &lt;h1&gt;
  3. Sample Json Data Shown Below
  4. &lt;/h1&gt;
  5. &lt;h2&gt;
  6. Check console for outputs
  7. &lt;/h2&gt;
  8. &lt;/div&gt;
  9. &lt;xmp&gt;
  10. [{
  11. &quot;transaction&quot;: 1,
  12. &quot;store&quot;: 1,
  13. &quot;transactionLines&quot;: [{
  14. &quot;transactionId&quot;: 1,
  15. &quot;lineId&quot;: 3,
  16. &quot;lineValue&quot;: 25
  17. },
  18. {
  19. &quot;transactionId&quot;: 1,
  20. &quot;lineId&quot;: 2,
  21. &quot;lineValue&quot;: 50
  22. },
  23. {
  24. &quot;transactionId&quot;: 1,
  25. &quot;lineId&quot;: 1,
  26. &quot;lineValue&quot;: 100
  27. }
  28. ]
  29. },
  30. {
  31. &quot;transaction&quot;: 2,
  32. &quot;store&quot;: 2,
  33. &quot;transactionLines&quot;: [{
  34. &quot;transactionId&quot;: 1,
  35. &quot;lineId&quot;: 2,
  36. &quot;lineValue&quot;: 50
  37. },
  38. {
  39. &quot;transactionId&quot;: 1,
  40. &quot;lineId&quot;: 1,
  41. &quot;lineValue&quot;: 100
  42. }
  43. ]
  44. }
  45. ]
  46. &lt;/xmp&gt;

<!-- end snippet -->

答案1

得分: 1

你忘记使用 j 变量。

  1. ///虚拟 JSON 数据已被字符串化并放在顶部//////
  2. const inputData = "[{\r\n\t\t\"transaction\": 1,\r\n\t\t\"store\": 1,\r\n\t\t\"transactionLines\": [{\r\n\t\t\t\t\"transactionId\": 1,\r\n\t\t\t\t\"lineId\": 3,\r\n\t\t\t\t\"lineValue\": 25\r\n\t\t\t},\r\n\r\n\t\t\t{\r\n\t\t\t\t\"transactionId\": 1,\r\n\t\t\t\t\"lineId\": 2,\r\n\t\t\t\t\"lineValue\": 50\r\n\t\t\t},\r\n\t\t\t{\"transactionId\": 1,\r\n\t\t\t\t\"lineId\": 1,\r\n\t\t\t\t\"lineValue\": 100\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t\"transaction\": 2,\r\n\t\t\"store\": 2,\r\n\t\t\"transactionLines\": [{\r\n\t\t\t\t\"transactionId\": 1,\r\n\t\t\t\t\"lineId\": 2,\r\n\t\t\t\t\"lineValue\": 50\r\n\t\t\t},\r\n\t\t\t{\"transactionId\": 1,\r\n\t\t\t\t\"lineId\": 1,\r\n\t\t\t\t\"lineValue\": 100\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n]";
  3. const input = JSON.parse(inputData);
  4. var total = 0;
  5. ////// 第一个 “For Loop” 遍历输入数据 /////
  6. ////// 并列出交易 ///////////////////////
  7. for (let i = 0; i < input.length; i++) {
  8. console.log(input[i].transaction);
  9. ///////// 第二个 “For Loop” 在交易循环内部。 ////////
  10. ///////// 这遍历了上面循环中的交易数据 /
  11. ///////// 并列出交易 ///////////////////////////////
  12. for (let j = 0; j < input[i].transactionLines.length; j++) {
  13. ///////// 通过将行值添加到现有总和来增加总数 ////////////////////////////////////////
  14. total = total + input[i].transactionLines[j].lineValue
  15. console.log(input[i].transactionLines[j].lineId);
  16. console.log("Transaction ID = " + input[i].transaction + " loop x " + j + ": New Total = " + input[i].transactionLines[j].transactionId);
  17. }
  18. }
  1. <div>
  2. <h1>
  3. 以下是示例的 Json 数据
  4. </h1>
  5. <h2>
  6. 请查看控制台输出
  7. </h2>
  8. </div>
  9. <xmp>
  10. [{ "transaction": 1, "store": 1, "transactionLines": [{ "transactionId": 1, "lineId": 3, "lineValue": 25 }, { "transactionId": 1, "lineId": 2, "lineValue": 50 }, { "transactionId": 1, "lineId": 1, "lineValue": 100 } ] }, { "transaction": 2, "store": 2,
  11. "transactionLines": [{ "transactionId": 1, "lineId": 2, "lineValue": 50 }, { "transactionId": 1, "lineId": 1, "lineValue": 100 } ] } ]
  12. </xmp>
英文:

You forgot to use j variable

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

  1. ///Dummy JSON Data Stringified and put in the top /////////
  2. const inputData = &quot;[{\r\n\t\t\&quot;transaction\&quot;: 1,\r\n\t\t\&quot;store\&quot;: 1,\r\n\t\t\&quot;transactionLines\&quot;: [{\r\n\t\t\t\t\&quot;transactionId\&quot;: 1,\r\n\t\t\t\t\&quot;lineId\&quot;: 3,\r\n\t\t\t\t\&quot;lineValue\&quot;: 25\r\n\t\t\t},\r\n\r\n\t\t\t{\r\n\t\t\t\t\&quot;transactionId\&quot;: 1,\r\n\t\t\t\t\&quot;lineId\&quot;: 2,\r\n\t\t\t\t\&quot;lineValue\&quot;: 50\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\&quot;transactionId\&quot;: 1,\r\n\t\t\t\t\&quot;lineId\&quot;: 1,\r\n\t\t\t\t\&quot;lineValue\&quot;: 100\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t\&quot;transaction\&quot;: 2,\r\n\t\t\&quot;store\&quot;: 2,\r\n\t\t\&quot;transactionLines\&quot;: [{\r\n\t\t\t\t\&quot;transactionId\&quot;: 1,\r\n\t\t\t\t\&quot;lineId\&quot;: 2,\r\n\t\t\t\t\&quot;lineValue\&quot;: 50\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\&quot;transactionId\&quot;: 1,\r\n\t\t\t\t\&quot;lineId\&quot;: 1,\r\n\t\t\t\t\&quot;lineValue\&quot;: 100\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n]&quot;
  3. const input = JSON.parse(inputData);
  4. var total = 0;
  5. ////// First &quot;For Loop&quot; goes through input data /////
  6. ////// and lists transactions ///////////////////////
  7. for (let i = 0; i &lt; input.length; i++) {
  8. console.log(input[i].transaction);
  9. ///////// 2nd &quot;For Loop&quot; is inside the transaction loop. ////////
  10. ///////// This goes through transaction data from the above loop /
  11. ///////// and lists transactions ///////////////////////////////
  12. for (let j = 0; j &lt; input[i].transactionLines.length; j++) {
  13. ///////// Increase the total by adding the line value to the /////
  14. ///////// existing total ////////////////////////////////////////
  15. total = total + input[i].lineValue
  16. console.log(input[i].transactionLines[j].lineId);
  17. console.log(&quot;Transaction ID = &quot; + input[i].transaction + &quot; loop x &quot; + j + &quot;: New Total = &quot; + input[i].transactionLines[j].transactionId);
  18. }
  19. }

<!-- language: lang-html -->

  1. &lt;div&gt;
  2. &lt;h1&gt;
  3. Sample Json Data Shown Below
  4. &lt;/h1&gt;
  5. &lt;h2&gt;
  6. Check console for outputs
  7. &lt;/h2&gt;
  8. &lt;/div&gt;
  9. &lt;xmp&gt;
  10. [{ &quot;transaction&quot;: 1, &quot;store&quot;: 1, &quot;transactionLines&quot;: [{ &quot;transactionId&quot;: 1, &quot;lineId&quot;: 3, &quot;lineValue&quot;: 25 }, { &quot;transactionId&quot;: 1, &quot;lineId&quot;: 2, &quot;lineValue&quot;: 50 }, { &quot;transactionId&quot;: 1, &quot;lineId&quot;: 1, &quot;lineValue&quot;: 100 } ] }, { &quot;transaction&quot;: 2, &quot;store&quot;: 2,
  11. &quot;transactionLines&quot;: [{ &quot;transactionId&quot;: 1, &quot;lineId&quot;: 2, &quot;lineValue&quot;: 50 }, { &quot;transactionId&quot;: 1, &quot;lineId&quot;: 1, &quot;lineValue&quot;: 100 } ] } ]
  12. &lt;/xmp&gt;

<!-- end snippet -->

huangapple
  • 本文由 发表于 2023年2月6日 18:43:13
  • 转载请务必保留本文链接:https://go.coder-hub.com/75360246.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定