2016-08-29 4 views
0

JavaScriptまたはjQueryを使用して2つの配列から1つのJsonオブジェクトを作成したいとします。次の形式でデータベースに保存されたデータ:2つのアレイからJsonを作成する

clob_field_1:1、2、3、4、5、6、7、8、9、10などなど...

clob_field_2:8106.23、 7856.49、8009.15、8121.78、8082.8、8294.43、 8137.9、8265.81、8319.5、8186.43などなど...

理想的には、このような結果はずルックス:

[{ "アイテム:" 1、 "Value:" 8106.23}、{"Item:" 2、 "値:" 7856.49}、{ "項目:" 3 "値:" 8009.15}、{ "項目:" 4 "値:" だからなどなど8121.78}、...]

私がやったことは、PL/SQLを使ってデータベースからclobs filedsを取り出したので、JavaScriptからアクセスできます。その後、2つの変数を宣言してオブジェクトを設定し、データをループして素敵なデータのペアを作成します。代わりに、昏睡、スピーチのコロン、

{"Item:1":"Value:8106.23}","Item:2":"Value:7856.49}","Item:3":"Value:8009.15}","Item:4":"Value:8121.78}","Item:5":"Value:8082.8}","Item:6":"Value:8294.43}","Item:7":"Value:8137.9}","Item:8":"Value:8265.81}","Item:9":"Value:8319.5}","Item:10":"Value:8186.43}"} 

左中括弧は以降のペア2から欠落している:これは、これまで私のJavaScriptコードです:

var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 
var b = [8106.23, 7856.49, 8009.15, 8121.78, 8082.8, 8294.43, 8137.9, 8265.81, 8319.5, 8186.43]; 
    var obj = {}; 
for (var i = 0; i < a.length; i++) { 
    obj['Item:' + a[i]] = 'Value:' + b[i] + '}'; 
} 
alert(JSON.stringify(obj)); 

しかし、結果はひどいですし、次のように見えますマークが間違った場所にあるなどなど...私はコード内にsyntaxisエラーがあり、それが何であるか把握できないと思います。助けていただきありがとうございます。

+0

'[1、2、3、4、5、6、7、8、9、10]'理由そのようなものが欲しいですか?単に 'var a = 10;'ではないのですか? –

+0

あなたのコードには '+ '}' 'なぜ?なぜ私はそれをまったく使っているのですか? –

+0

期待される出力は? –

答えて

1

出力用の配列を作成し、新しいオブジェクトを単一のオブジェクトにすべて設定するのではなく、その中にプッシュします。

var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 
var b = [8106.23, 7856.49, 8009.15, 8121.78, 8082.8, 8294.43, 8137.9, 8265.81, 8319.5, 8186.43]; 
var output = []; 
for (var i = 0; i < a.length; i++) { 
    output.push({'Item': a[i], 'Value': b[i]}); 
} 
alert(JSON.stringify(output)); 
+0

魅力的な作品!ありがとうございました! – USSR

+0

皆さんのおかげで、私は自分の要求に最も合った正しい答えを「Kaivosukeltaja」にします。しかし、もう一度、皆さんのおかげで、本当にあなたの助けを歓迎しました!私のコードの問題点を教えてくれてありがとう! – USSR

1

あなたが試すことができ:

var obj = []; 
for (var i = 0; i < a.length; i++) { 
    obj.push({ 
    Item: a[i], 
    Value: b[i] 
    }); 
} 
+0

ありがとうございます、あなたのコードも同様に動作します!ご協力いただきありがとうございます ! – USSR

1
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 
var b = [8106.23, 7856.49, 8009.15, 8121.78, 8082.8, 8294.43, 8137.9, 8265.81, 8319.5, 8186.43]; 

    var objArra = []; 
for (var i = 0; i < a.length; i++) { 
    var obj = {}; 

    obj['Item:'] = a[i]; 
    obj['value:'] = b[i]; 
    objArra.push(obj) 
} 
alert(JSON.stringify(objArra)); 

Fiddle Check

+0

ありがとう、それも動作しますが、私はそれが私の要件に最も適した正しい 'Kaivosukeltaja'答えをマークしました。とにかく助けてくれてありがとう、そしてそれも参考になった! – USSR

3

mapとES6の構文を経由してコンパクトな方法:

var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 
 
var b = [8106.23, 7856.49, 8009.15, 8121.78, 8082.8, 8294.43, 8137.9, 8265.81, 
 
     8319.5, 8186.43]; 
 
var obj = a.map((item, i) => ({ item, value: b[i] })); 
 
console.log(obj);

注:プロパティ名の最初の文字を大文字にすることをお勧めします。コンストラクタ関数の場合にのみこれを行うのが一般的な方法です。あなたが思う場合

+1

'var obj = a.map((item、i)=>({item、value:b [i]})));)' –

+1

ありがとう@NinaScholz、そうです。注意:私は同じ質問をよく見ています。私はあなたの貢献が好きです! – trincot

+0

私は資本を維持する理由、私はこのデータを使ってチャートを作成し、資本を維持しなければならないからです。しかし、あなたのコメントのおかげで、将来私の心を保つでしょう。ありがとう! – USSR

1

、あなたの入力が右になることを、あなたも試みることができるこの

var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 
var b = [8106.23, 7856.49, 8009.15, 8121.78, 8082.8, 8294.43, 8137.9, 8265.81, 8319.5, 8186.43]; 
let sum = a.map((val, index) => { 
    return {'Item':val, 'Value': b[index]}; 
}) 
関連する問題