如何使用JavaScript循环创建嵌套对象数组?

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

How to created a nested array of objects using javascript Loop?

问题

我需要循环处理一个AJAX响应,然后创建一个像这样的数组:

  1. "2023-03-30": {"number": '', "url": ""},
  2. "2023-03-30": {"number": '', "url": ""}

循环代码如下:

  1. var columns = {};
  2. for (var i=0; i < parsed_data.tasks.length; i++) {
  3. var mydate = parsed_data.tasks[i].date;
  4. columns.push(mydate);
  5. }
  6. console.log(columns);

但这不会给我所需的结果。

我该如何实现这个?

英文:

I need to loop an AJAX response and then create an array like this:

  1. &quot;2023-03-30&quot;: {&quot;number&quot;: &#39;&#39;, &quot;url&quot;: &quot;&quot;},
  2. &quot;2023-03-30&quot;: {&quot;number&quot;: &#39;&#39;, &quot;url&quot;: &quot;&quot;}

The loop looks like this:

  1. var columns = {};
  2. for (var i=0; i &lt; parsed_data.tasks.length; i++) {
  3. var mydate = parsed_data.tasks[i].date;
  4. columns.push(mydate);
  5. }
  6. console.log(columns);

But this doesn't give me the required result.

How do I achieve this?

答案1

得分: 2

以下是翻译好的代码部分:

  1. // 声明一个空对象来存储结果
  2. var result = {};
  3. // 遍历 AJAX 响应数组
  4. for (i = 0; i < parsed_data.tasks.length; i++) {
  5. // 从每个对象中提取日期、编号和 URL 值
  6. var mydate = parsed_data.tasks[i].date;
  7. var number = parsed_data.tasks[i].number;
  8. var url = parsed_data.tasks[i].url;
  9. // 检查结果对象中是否已存在具有该日期的对象
  10. if (!result[mydate]) {
  11. // 如果不存在,创建一个新对象,以日期作为键和一个空对象作为值
  12. result[mydate] = {};
  13. }
  14. // 设置结果对象中相应对象的编号和 URL 值
  15. result[mydate]["number"] = number;
  16. result[mydate]["url"] = url;
  17. }
  18. // 输出最终结果
  19. console.log(result);
英文:

You said you aren't getting the required response. What results are you actually getting? Maybe try something like this.

  1. // Declare an empty object to store the result
  2. var result = {};
  3. // Loop through the AJAX response array
  4. for (i = 0; i &lt; parsed_data.tasks.length; i++) {
  5. // Extract the date, number, and url values from each object
  6. var mydate = parsed_data.tasks[i].date;
  7. var number = parsed_data.tasks[i].number;
  8. var url = parsed_data.tasks[i].url;
  9. // Check if an object with the date already exists in the result object
  10. if (!result[mydate]) {
  11. // If it doesn&#39;t exist, create a new object with the date as the key and an empty object as the value
  12. result[mydate] = {};
  13. }
  14. // Set the number and url values for the corresponding object in the result object
  15. result[mydate][&quot;number&quot;] = number;
  16. result[mydate][&quot;url&quot;] = url;
  17. }
  18. // Output the final result
  19. console.log(result);

答案2

得分: 0

If you need date you can use Object.keys like:

  1. const array = [
  2. {"2023-03-30": {"number": '', "url": ''}},
  3. {"2023-03-30": {"number": '', "url": ''}}
  4. ];
  5. const result = array.map(el => Object.keys(el)).flat();
  6. console.log(result);
英文:

If you need date you can use Object.keys like:

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

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

  1. const array = [
  2. {&quot;2023-03-30&quot;: {&quot;number&quot;: &#39;&#39;, &quot;url&quot;: &quot;&quot;}},
  3. {&quot;2023-03-30&quot;: {&quot;number&quot;: &#39;&#39;, &quot;url&quot;: &quot;&quot;}}
  4. ];
  5. const result = array.map(el =&gt; Object.keys(el)).flat();
  6. console.log(result);

<!-- end snippet -->

huangapple
  • 本文由 发表于 2023年3月7日 18:22:18
  • 转载请务必保留本文链接:https://go.coder-hub.com/75660700.html
匿名

发表评论

匿名网友

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

确定