2010-12-13 17 views
16

javascript内に構造体を作成したいと思います。私は情報のペアを持って、私はたとえば、使用したい:JavaScript配列/構造体

array[1] = new Struct(); 
array[1].name = "parameter-name"; 
array[1].value = "parameter-value"; 

array[2] = new Struct(); 
array[2].name = "parameter-name2"; 
array[2].value = "parameter-value2"; 

これは多分2-20、私の配列内の要素多分に、切り抜いた値で切り抜いたページにすることができ..

その後、私の一般的なjavascriptの中に、私は配列を解析し、私のパラメータ、例を続行したいと思います:

for(i=1 to length_of_my_array) { 
    _tag.array[i].name = array[i].value; 
} 

私は純粋なJavaScriptでこれを実現するにはどうすればよいですか?ヒントありがとう!

答えて

26

素晴らしい機能を望んでいない限り、JavaScriptでそのような構造を作成するのは本当に簡単です。実際には、あなたがこれをnew Struct()を交換する場合は、あなたが投稿したコードはほとんど、動作します:

array[1] = {}; 

これは、空のオブジェクトを作成し、そしてあなたは、このようなnamevalueなど、あなたがそれにしたい任意のプロパティを置くことができます。

配列を作成するには、このような何か行うことができます。

var array = []; // empty array 

// object literal notation to create your structures 
array.push({ name: 'abc', value: 'def' }); 
array.push({ name: 'ghi', value: 'jkl' }); 
... 

を、配列を反復処理するために:

for (var i = 0; i < array.length; i++) { 
    // use array[i] here 
} 
+1

+1ファストフィンガー;) – gnarf

0
var array = {paramName: 'paramValue', paramName2: 'paramValue2'}; 

for(i in array) { 
    _tag.i = array.i; 
} 
0

はない "構造体" はありませんJavaScriptのオブジェクトだけで

my_array = new Array(); 
my_array.push({name: 'john', age:31}); 
my_array.push({name: 'da_didi', age:120}); 

for (i=0; i<my_array.length; i++) 
{ 
    alert(my_array[i].name); 
} 
2

objecあなたは純粋なJavaScriptの/ JSONに配列し、一般的なオブジェクトを定義することができます

var myArray = []; 

myArray[0] = {name:"some name", value:"some value"}; 
myArray[1] = {name:"another name", value:"another value"}; 

for (i=0; i < myArray.length; i++) { 
    console.log(myArray[i].name + '/' + myArray[i].value); 
} 
3

:そうのように、配列内のTリテラル

var array = [ 
    {name: 'parameter-name', value: 'parameter-value'}, 
    {name: 'parameter-name2', value: 'parameter-value2'} 
]; 

var array = []; // empty array 
array.push({name: 'parameter-name', value: 'parameter-value'}); 
array.push({name: 'parameter-name2', value: 'parameter-value2'}); 
console.log(array); 
// Output: 
// [Object { name="parameter-name", value="parameter-value2"}, Object { name="parameter-name2", value="parameter-value2"}] 

また、そのような同じ配列を定義することができます限りアレイをループとして

for (var i = 0; i<array.length; i++) { 
    var elem = array[i]; 
    console.log(elem.name, elem.value); 
} 

// Outputs: 
// parameter-name parameter-value2 
// parameter-name2 parameter-value2 
0
// initialize empty array  
var myArray = []; 

// fill it with an object - the equivalent of a struct in javascript 
myArray.push({ 
    name: 'example-name' 
    value: 'example-value' 
}); 
// repeat as neccessary 

// walking through the array 
for (var i = 0; i < myArray.length; i++) 
{ 
    // retrieving the record 
    record = myArray[i]; 

    // and accessing a field 
    doSomething(record.name); 
} 
0

どの程度

function Struct(name, value) { 
    this.name = name; 
    this.value = value; 
} 

arr[0] = new Struct("name1", "value1"); 
0

Javascriptのオブジェクトが緩んオブジェクトです:プロパティが追加され、動的に削除することができます。つまり、新しいStruct()を作成することは、返されたオブジェクトが常に期待するプロパティを持つことを保証しません。あなたは、使用(ダックタイピング)の時点でのプロパティの可用性を確認する必要があります。

var i, element; 
for (i = 0; i < array.length; i++) { 
    element = array[i]; 
    if (Object.hasOwnProperty.call(element, "name") 
     && Object.hasOwnProperty.call(element, "value")) { 
    _tag[element.name] = element.value; 
    } 
} 

を(また、私はちょうど_tagがオブジェクトそのものですが、それはあなたの例からも明らかではなかったことを推測しています。 )

おそらくより簡潔な構文を使用できますが、これはプロパティの値に大きく依存します。たとえば、あなたはこのようなものを使用することができ-might-:

var i, element; 
for (i = 0; i < array.length; i++) { 
    element = array[i]; 
    if (element.name && element.value) { 
    _tag[element.name] = element.value; 
    } 
} 

をしかし、あなたは上記の条件が偽になることを認識する必要はないだけプロパティ(名前と値)の一方または両方が定義されていない場合どちらかまたは両方の値が空の文字列、null、0、NaN、またはfalseを参照している場合にも発生します。

4

あなたが解決しようとしている問題についてもっと知ることは良いことです。

あなたが定義していない限り、JavaScriptにはStructと呼ばれるオブジェクトはありません。

あなたが探しているのは、StructではなくJavaScriptオブジェクトだと思います。新しいオブジェクトを作成するにはいくつかの方法があり、配列や他のオブジェクトに入れ子にすることができます。私はいくつかの方法で、あなたのコードを変更した

myArray[0] = new Object(); 
myArray[0].name = "parameter-name"; 
myArray[0].value = "parameter-value"; 

myArray[1] = new Object(); 
myArray[1].name = "parameter-name2"; 
myArray[1].value = "parameter-value2"; 

お知らせ: 1.「アレイ」私たちは、特定の配列に言及していることを明確にするために、「MyArrayという」と命名されます。 2. myArrayの最初のインスタンスは0です。配列はJavascriptで0から始まります。 3.構造体がObjectに変更されました。

myarray = [ 
    { 
     "name":"parameter-name", 
     "value":"parameter-value" 
    }, 
    { 
     "name":"parameter-name2", 
     "value":"parameter-value2" 
    } 
]; 

これは同じことを行うための別の構文です。配列(大括弧)とオブジェクト(中括弧)を指定するのに "リテラル表記"を使います。

for(var i = 0; i < myArray.length; i++) { 
    for(key in myArray[i]) { 
     alert(key + " :: " myArray[i][key]); 
    } 
} 

これは、配列をループし、オブジェクトの各プロパティについて警告します。

alert(myArray[0]['value']) //parameter-value 
myArray[0]['value'] = "bar"; 
alert(myArray[0]['value']) //bar 

各オブジェクトの各プロパティに新しい値を割り当てることもできます。