2011-12-24 5 views
0

私は変数の割り当てに小さな問題があります。何らかの理由で私の行変数が正しく割り当てられません。JavaScriptで配列変数を代入する

var records = new Array(); 
var recid = -5 
var subrecid = 6495; 
var line = new Array(); 
line['recid'] = recid; 
line['subrecid'] = subrecid; 
if (subrecid > 0) records.push(line); 
+2

[実際に、それはありません。] (http://jsfiddle.net/DF3PR/)解決策であると考えていることを確認する代わりに、エラーを示す[jsFiddle](http://jsfiddle.net)を提供できますか? – Ryan

+2

「割り当て」していないことをどのように知っていますか?あなたは何の結果を得られないと思っていますか? – Gareth

+1

javascriptには連想配列はありません。 1line ['syntax']は実際にそこでオブジェクトを呼び出すために使用できますが、javascriptには連想配列があります。実際に配列として初期化することは可能でしょうか? – Nanne

答えて

4

非整数インデックス作成にはアレイを使用しないでください。オブジェクトを使用する。また、の代わりにnew Array()を使用するのが一般的です。ああ、セミコロンがない行があります。

var records = []; 
var recid = -5; 
var subrecid = 6495; 
var line = {}; // object, not array 
line.recid = recid; 
line.subrecid = subrecid; 
if (subrecid > 0) records.push(line); 

さらに簡潔:

var records = []; 
var recid = -5; 
var subrecid = 6495; 
var line = { 
    recid: recid, 
    subrecid: subrecid 
}; 
if (subrecid) records.push(line); 
+0

ハ!私が入力している間にあなたはそれをしました。私は別のテストを考えましたが、subrecid *が変更されているかどうかは明らかではないので、ある時点で-veになるかもしれません。 – RobG

2

Mattの答えは結構ですが、あなたはオブジェクトリテラル構文の大きな利点を取ることができる:

var records = []; 
var line = {recid: -5, subrecid: 6495 }; 

if (line.subrecid > 0) records.push(line); 
+1

または最大の簡潔さのために: 'var records = [{recid:-5、subrecid:6495}];' –

-1
var val1=$('#Accountstype_account_c').val(); 
+1

これが解決策である理由についてもう少し説明を加えることは役に立ちます。 – Trisha