使用 JavaScript 中的对象的哈希表功能

Hashtable functionality using objects in JavaScript

本文关键字:哈希表 功能 对象 使用 JavaScript      更新时间:2023-09-26

好的,我有以下情况:我得到一个对象,它是一个带有列表的数组。数组中始终有 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 处向对象添加条目,而是添加对象.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);
    });
    

    }

您将如何解决这个问题?我的代码有什么问题?(哦,性能无关紧要)

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

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

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

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