2017-08-17 9 views
1

に新しいフィールドを追加します。私は、DataTableの上で、このデータを使用したいが、私は追加したい反復配列と、私は次のようなAJAX呼び出しからJSON配列した各ネストされた配列

[{field1: "Something", field2: "Other"},{field1: "Something", field2: "Other"},{field1: "Something", field2: "Other"}] 

をフィールドTitle(Group)に基づいてテーブル内の各行にテキストを入力します。したがって、この列を各配列に追加すると、次のようになります。

[{field1: "Something", field2: "Other", Group: "Text Input"},{field1: "Something", field2: "Other", Group: "Text Input"},{field1: "Something", field2: "Other", Group: "Text Input"}] 

このように、DataTablesは新しい各行にテキスト入力を追加します。これはjQueryやjavascriptを使ってどのように達成できますか?

私は、配列の谷繰り返すことで試してみました:

var i, j, arrayItem; 
for (i = 0; i < array.length; ++i) { 
    arrayItem = array[i]; 
    arrayItem.push({Group: "Text Input"}); 
} 

しかし、これはエラー、"Push" is not a functionを示しています。ご覧のとおり、JSON配列にはネストされた配列ごとに明示的なインデックスはなく、各配列は一意ではありません。

答えて

2

配列内のエントリは配列ではなく、オブジェクトです。 (アレイもオブジェクトですが、これらのエントリは配列ではありません)オブジェクトにプロパティを追加するには、簡単な方法はそれに割り当てることです:

arrayItem.Group = "text input"; 

あなたはあなたのように、そのためにforループを使用することができます絶対に大丈夫です、以上ES5とのとして(または廃止された環境用ポリフィルで)使用可能性があり、行っているforEach:これは、あなたがそれらのiarrayItem変数を必要としないという利点があり

array.forEach(function(entry) { 
    entry.Group = "text input"; 
}); 

。 ES2015では

+あなたがfor-ofループ使用することができます(entryのみループ内で定義される)

for (const entry of array) { 
    entry.Group = "text input"; 
} 

...同じ利点を持っています。

+0

私は、ネストされたオブジェクトの代わりに、ネストされた配列に参照のうえいたときにと差別化する方法を参照してください?。私はしばらくこのことに苦しんでいる。 – CrisAlfie

+0

'[...]'は配列を表します。 '{...}'は非配列オブジェクトを示します。 –

+0

私はこの質問をここに残しておきます。将来的に他人を助けるかもしれません:D – CrisAlfie

1

オブジェクトなのでプッシュできません。オブジェクトに割り当てるだけです。

var fields = [{ 
 
    field1: "Something", 
 
    field2: "Other" 
 
}, { 
 
    field1: "Something", 
 
    field2: "Other" 
 
}, { 
 
    field1: "Something", 
 
    field2: "Other" 
 
}] 
 

 
fields.forEach(x => 
 
    x.Group = "Text Input" 
 
) 
 
console.log(fields)

1

{field1: "Something", field2: "Other"}それは、オブジェクトの配列ではありません。配列は[]で囲まれ、オブジェクトは{}にあり、要素はkey: valueです。

オブジェクトに追加するのにpush()を使用しないでください。プロパティを割り当てるだけです。

array.forEach(e => e.Group = "text Input"); 

または

for (var i = 0; i < array.length; i++) { 
    array[i].Group = "text Input"; 
} 
関連する問題