[解決済み] jQueryでJavaScriptオブジェクトから項目を追加/削除する
質問
以下のようなJavaScriptオブジェクトがあります。
var data = {items: [
{id: "1", name: "Snatch", type: "crime"},
{id: "2", name: "Witches of Eastwick", type: "comedy"},
{id: "3", name: "X-Men", type: "action"},
{id: "4", name: "Ordinary People", type: "drama"},
{id: "5", name: "Billy Elliot", type: "drama"},
{id: "6", name: "Toy Story", type: "children"}
]};
このリストに項目を追加/削除したい場合、jQueryを使用してどのように行えばよいでしょうか?クライアントは、このリストが動的に変更可能であることを望んでいます。
どのように解決するのですか?
まず、あなたの引用したコードは ではなく JSONです。あなたのコードはJavaScriptオブジェクトリテラル記法です。 JSON は、パースしやすいように設計されたそのサブセットです。
あなたのコードでは、オブジェクト (
data
) を定義し、その中に配列 (
items
) のオブジェクトの配列 (各オブジェクトには
id
,
name
そして
type
).
これにはjQueryは必要なく、JavaScriptだけでいいのです。
項目を追加する。
data.items.push(
{id: "7", name: "Douglas Adams", type: "comedy"}
);
これで末尾に追加されます。途中で追加する場合は下記を参照してください。
項目を削除する。
いくつかの方法があります。その
splice
メソッドは最も汎用性の高いものです。
data.items.splice(1, 3); // Removes three items starting with the 2nd,
// ("Witches of Eastwick", "X-Men", "Ordinary People")
splice
は元の配列を変更し、削除した項目の配列を返します。
途中で追加する。
splice
は実際には追加と削除の両方を行います。のシグネチャは
splice
メソッドは
removed_items = arrayObject.splice(index, num_to_remove[, add1[, add2[, ...]]]);
-
index
- 変更を開始するインデックス -
num_to_remove
- そのインデックスから始めて、これだけのエントリを削除します。 -
addN
- ...そして、これらの要素を挿入します。
というわけで、こんな感じで3番目の位置に項目を追加することができます。
data.items.splice(2, 0,
{id: "7", name: "Douglas Adams", type: "comedy"}
);
その内容はというと インデックス2から始めて、0個の項目を削除し、次の項目を挿入します。結果はこのようになります。
var data = {items: [
{id: "1", name: "Snatch", type: "crime"},
{id: "2", name: "Witches of Eastwick", type: "comedy"},
{id: "7", name: "Douglas Adams", type: "comedy"}, // <== The new item
{id: "3", name: "X-Men", type: "action"},
{id: "4", name: "Ordinary People", type: "drama"},
{id: "5", name: "Billy Elliot", type: "drama"},
{id: "6", name: "Toy Story", type: "children"}
]};
一度にいくつかを削除し、いくつかを追加することができます。
data.items.splice(1, 3,
{id: "7", name: "Douglas Adams", type: "comedy"},
{id: "8", name: "Dick Francis", type: "mystery"}
);
...ということです。インデックス1から始めて、3つのエントリを削除し、次にこれら2つのエントリを追加します。という結果になります。
var data = {items: [
{id: "1", name: "Snatch", type: "crime"},
{id: "7", name: "Douglas Adams", type: "comedy"},
{id: "8", name: "Dick Francis", type: "mystery"},
{id: "4", name: "Ordinary People", type: "drama"},
{id: "5", name: "Billy Elliot", type: "drama"},
{id: "6", name: "Toy Story", type: "children"}
]};
関連
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み] JavaScriptのオブジェクトにキーと値のペアを追加するにはどうすればよいですか?
-
[解決済み] jQueryでフォームデータをJavaScriptオブジェクトに変換する
-
[解決済み】JavaScriptのオブジェクトの長さ
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] 兄弟ノードを選択する方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] moment.jsでミュータビリティを回避するには?
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] javascriptでオプションのパラメータを扱う
-
[解決済み] JavaScriptデータフォーマット/プリティプリンタ