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を作成すると役立ちます。

しかし、考えられる問題の 1 つは、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 に答える