281

jsonファイルにデータを入力する必要があります。これで次のようになります。

{"element":{"id":10,"quantity":1}}

そして、別の「要素」を追加する必要があります。私の最初のステップは、を使用してそのjsonをオブジェクトタイプに入れることcart = JSON.parseです。次に、新しい要素を追加する必要があります。私は別の要素を追加するために使用する必要があると思いcart.pushました、私はこれを試しました:

var element = {};
element.push({ id: id, quantity: quantity });
cart.push(element);

しかし、実行しようとすると「オブジェクトにメソッドプッシュがありません」というエラーが発生しましelement.pushた。「要素」をどこにも伝えていないため、非常に間違ったことをしていると思います。

どうやってやるの?

編集:すべての人に申し訳ありませんが、頭の中でたくさんの混乱がありました。

からデータを取得するときにオブジェクトタイプしか取得できないと思ってJSON.parseいましたが、最初にJSONに入力したものを取得します。

オブジェクトの代わりに配列を配置することで問題が解決しました。ここでも多くの提案を使用しました。ありがとうございました。

4

18 に答える 18

359

要素は配列ではありませんが、多くの要素オブジェクトをサポートするには、カートを配列にする必要があります。コード例:

var element = {}, cart = [];
element.id = id;
element.quantity = quantity;
cart.push(element);

カートをフォーム内のオブジェクトの配列にしたい場合は、{ element: { id: 10, quantity: 1} }次を実行します。

var element = {}, cart = [];
element.id = id;
element.quantity = quantity;
cart.push({element: element});

JSON.stringify()コメントで懸念事項として言及されました:

>> JSON.stringify([{a: 1}, {a: 2}]) 
      "[{"a":1},{"a":2}]" 
于 2013-01-09T11:56:50.793 に答える
201

その行で

var element = {};

elementプレーンオブジェクトであると定義します。ネイティブ JavaScript オブジェクトにはpush()メソッドがありません。新しいアイテムをプレーン オブジェクトに追加するには、次の構文を使用します。

element[ yourKey ] = yourValue;

一方、次を使用elementして配列として定義できます

var element = [];

次に、 を使用して要素を追加できますpush()

于 2013-01-09T11:57:45.520 に答える
25

カートを配列ではなくオブジェクトとして保存する必要がある場合([]として保存することをお勧めしますが)、IDをキーとして使用するように構造をいつでも変更できます。

var element = { quantity: quantity };
cart[id] = element;

これにより、次のようにカートに複数のアイテムを追加できます。

cart["1"] = { quantity: 5};
cart["2"] = { quantity: 10};

// Cart is now:
// { "1": { quantity: 5 }, "2": { quantity: 10 } }
于 2013-01-09T12:21:06.933 に答える
6

var element = [];
javascript{}は空のオブジェクトで[]あり、空の配列であると書く必要があります。

于 2013-01-09T11:55:27.333 に答える
6
cart.push({"element":{ id: id, quantity: quantity }});
于 2013-01-09T11:58:04.643 に答える
3

これを試して:

var data = [{field:"Data",type:"date"},  {field:"Numero",type:"number"}];

var columns = {};

var index = 0;

$.each(data, function() {

    columns[index] = {
        field : this.field,
        type : this.type
    };

    index++;
});

console.log(columns);
于 2016-06-03T18:03:52.203 に答える
2

まだ解決策を探している人にとっては、オブジェクトは次のような配列に格納されているはずだと思います...

var element = {}, cart = [];
element.id = id;
element.quantity = quantity;
cart.push(element);

次に、要素をオブジェクトとして使用したい場合は、これを行うことができます...

var element = cart.find(function (el) { return el.id === "id_that_we_want";});

「id_that_we_want」に変数を配置し、配列から必要な要素の ID を指定します。「要素」オブジェクトが返されます。もちろん、オブジェクトを見つけるために ID を取得する必要はありません。他のプロパティを使用して検索を行うことができます。

于 2018-08-06T07:51:45.123 に答える
1

JS でループを実行するように設計していない場合、たとえば PHP に渡してループを実行する

let decision = {}
decision[code+'#'+row] = event.target.value

この概念は少し役立つかもしれません

于 2017-09-19T11:43:45.297 に答える