2

好的,我有以下场景:我得到一个对象,它是一个带有列表的数组。数组中总是有 3 个项目。

列表中的项目具有我感兴趣的特定字段(ISBN13)。

我想使用 JavaScript 构建这样的表:

<table>
    <tr>
        <td>Array_1_Item_1_ISBN13</td>
        <td>Array_2_Item_1_ISBN13</td>
        <td>Array_3_Item_1_ISBN13</td>
    </tr>
    <tr>
        <td>Array_1_Item_2_ISBN13</td>
        <td>Array_2_Item_2_ISBN13</td>
        <td>Array_3_Item_2_ISBN13</td>
    </tr>
</table>

在 C# 中,我只需构建一个字典,然后:

  • 如果我以前见过密钥,请添加一个新密钥
  • 如果我以前见过密钥,请继续构建字符串

但现在我在 jQuery/JS 领域,嗯。

下面,我尝试创建一个对象,我用它来填充数据。这段代码有以下问题:

  • 它不是在键 isbn13 处向对象添加条目,而是添加 object.isbn = ...
  • 不确定 if() 语句是否有效

    function setBookTableFromProducts(data) {
    var outputArray = {};
    
    // list is an array of books, e-books and audiobooks)
    $.each($.parseJSON(data), function (index, value) {
        // single type of book
        $.each(value, function (index_inner, book) {
            var isbn13 = book.ISBN13;
            if (outputArray.isbn13 == null) {
                var newRowStr = '<tr>';
                newRowStr += '<td>' + book.ISBN13 + '</td>';
                outputArray.isbn13 = newRowStr;
            } else {
                outputArray.isbn13 += '<td>' +book.ISBN13+ '</td>';
            }
    
        });
    });
    
    $.each(outputArray, function (index, trArr) {
        trArr += '</tr>';
        $('#bookTable').append(trArr);
    });
    

    }

你会如何解决这个问题?我的代码有什么问题?(哦,性能并不重要)

4

1 回答 1

2

如果您提供一个输入示例(即 $.parseJSON(data))或者创建一个jsFiddle 将会有所帮助

但一个可能的问题是outputArray.isbn13。您已经var isbn13 = book.ISBN13获取了一些 ISBN 值(例如 9783161484100),然后期望将其用作outputArray带有outputArray.isbn13. 但是,关键是isbn13和不是outputArray.9783161484100。相反,尝试

var isbn13 = book.ISBN13;
if (outputArray[isbn13] == null) {
  ...
}

然后这将被解释为outputArray.9783161484100.

于 2013-11-05T14:23:02.453 回答