遍历两个数组时选择输出

时间:2019-03-17 16:14:31

标签: javascript arrays loops append output

因此,当我在js中遍历两个数组(关联)并将输出追加到表中时,我得到3 undefined。输出看起来像这样:  Output

您可以在控制台中看到迭代是连续进行的, 这就是为什么在给定数组性质的情况下我得到未定义值的原因

这是对控制器的jQuery调用,在这里我得到了两个数组:

function getArtworks() {
  $.ajax({
    type: 'GET',
    url: './index.php/Controller/getArtworks',
    dataType: 'json',
    success: function (jsonData) {
      showArtsInTable(jsonData);
      console.log(jsonData);
    },
    error: function () {
      alert('Error :' + jsonData);
    }
  });
}

这是我遍历数组并追加到表的地方:

function showArtsInTable(jsonData) {
  let table = $('#tblArt');
  $('#artForm').hide();
  table.empty();
  table.append('<thead>');
  table.append('<tr>');
  table.append('<th>Namn</th>');
  table.append('</tr>');
  table.append('</thead>');
  $.each(jsonData, function() {
    $.each(this, function(i, value) {
      console.log(value);
      table.append('<tbody>');
      table.append('<tr>');
      table.append(
        "<td><a href='#' onclick=getArtworkByID('" +
          value['ID'] +
          "')>" +
          value['NAME'] +
          '</a></td>'
      );
      table.append('</tr>');
      table.append('</tbody>');
      table.append('<tr>');
      table.append('<td>' + value['MAX(BID)'] + '</td>');
      table.append('</tr>');
    });
  });
}

字符串化控制台日志:

[
    {
      "ID": "1",
      "NAME": "Chaviour",
      "CATID": ""
    },
    {
      "ID": "2",
      "NAME": "simpleDrop",
      "CATID": ""
    },
    {
      "ID": "3",
      "NAME": "Chattash",
      "CATID": "Janne"
    },
],
[
    {
      "ID": "1",
      "DATE": "2019-03-16 19:39:06",
      "MAX(BID)": "7500"
    },
    {
      "ID": "2",
      "DATE": "2019-03-16 19:39:06",
      "MAX(BID)": "5000"
    },
    {
      "ID": "3",
      "DATE": "2019-03-16 20:55:48",
      "MAX(BID)": "9000"
    }
]

我只希望表在“名称”和“出价”列下附加值。 我该怎么办?

1 个答案:

答案 0 :(得分:0)

我想我明白你的追求。

只需检查一下,是否需要以下输出?

名称|竞标

特性| 7500

simpleDrop | 5000

查塔什| 9000

您需要首先通过ID联接您的数据:

glBufferSubData

这将返回以下数据,从这里应该很容易在表中显示它:

const data = [
     [
        {
          "ID": "1",
          "NAME": "Chaviour",
          "CATID": ""
        },
        {
          "ID": "2",
          "NAME": "simpleDrop",
          "CATID": ""
        },
        {
          "ID": "3",
          "NAME": "Chattash",
          "CATID": "Janne"
        },
    ],
    [
        {
          "ID": "1",
          "DATE": "2019-03-16 19:39:06",
          "MAX(BID)": "7500"
        },
        {
          "ID": "2",
          "DATE": "2019-03-16 19:39:06",
          "MAX(BID)": "5000"
        },
        {
          "ID": "3",
          "DATE": "2019-03-16 20:55:48",
          "MAX(BID)": "9000"
        }
    ]
]

const tidyData = data[0].map((a) => {
  // find the matching item by ID
  let match = data[1].find((b) => b.ID === a.ID) || {}
  // return the union
  return {
    ...a,
    ...match,
  }
})

console.log(tidyData);