2010-10-22 48 views
2

可以說,我在CJavascript中的C/C++數據結構是什麼?

struct address{ 
    char name; 
    int id; 
    char address; 
}; 

struct address adrs[40];  //Create arbitrary array of the structure. 40 is example 
adrs[0].name = 'a'; 
id[0]  = 1; 
... 

什麼是定義和創建用戶定義的結構的陣列的等效方式以下。

謝謝

+0

應當注意的是,JavaScript是基於原型和弱類型。不過,您可以通過簡單地使用對象文字來創建類似於結構的東西。 – Warty 2010-10-22 18:57:28

回答

2

等效將創建一個關聯數組的數組。

var arr = new Array(); 
arr[0] = { name: "name 1", id: 100, address: "addr 01" }; 
arr[1] = { name: "name 2", id: 101, address: "addr 02" }; 
//... 

在此之後,你將能夠做到:

arr[0].name = "new name 1"; 

或訪問元素:

if (arr[1].name == "name 2") { // will be true 
} 

希望它能幫助。

0
<script type="text/javascript"> 

    function address() 
    { 
     this.name=""; 
     this.id=0; 
     this.address="" 
    } 
    var addresses = new Array(40); 

    addresses[0] = new address(); 
    addresses[1] = new address(); 
    ..... 
    ..... 
    addresses[0].name = 'a'; 
    addresses[1].id = 5; 


</script> 
+0

您不能像調用方法那樣調用文字對象。 '新地址()'不起作用。 – lincolnk 2010-10-22 19:14:04

+0

@lincolnk。你是對的,謝謝。我修好了它。 – Robert 2010-10-22 19:36:58

+1

您不能在函數中使用'name:value'表示法 - 這是針對字面對象的表示法。 – lincolnk 2010-10-22 19:40:03

4

如果你打算爲一個對象預定義一個佈局,你可能需要使用一個構造器式的函數。

function address() { 
    this.name = null; 
    this.id = null; 
    this.address = null; 
} 

數組未輸入,您不必指定長度。

var adrs = []; 

可以創建address像這樣

var item = new address(); // note the "new" keyword here 
item.name = 'a'; 
item.id = 1; 
// etc... 

一個新的實例,那麼你可以push新項目到陣列上。

adrs.push(item); 

可以從數組中添加一個新項目,然後通過索引器訪問它。

// adrs has no items 
adrs.push(new address()); 
// adrs now has 1 item 
adrs[0].name = 'a'; 

// you can also reference length to get to the last item 
adrs[ adrs.length-1 ].id = '1'; 
+2

@Mark K當你調用'push'並且是基於0的數組時,數組增加它的計數器,所以在添加第一個項目後,你可以用adrs [0]訪問它,第二個項目是'adrs [1]'等等 – lincolnk 2010-10-22 19:35:03

0

結構解決的一個常見問題是排名系統。包含某些用戶的名稱和編號,然後根據編號對用戶進行排序的數組。下面是這個problem.Object陣列的JavaScript實現用在這裏

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
\t <title>Structure</title> 
 
</head> 
 
<body> 
 
<label>Enter Student Name 1:</label> 
 
<input type="text" id='n0' name=""><br> 
 
<label>Enter Student Mark 1:</label> 
 
<input type="text" id='m0' name=""><br> 
 
<label>Enter Student Name 2:</label> 
 
<input type="text" id='n1' name=""><br> 
 
<label>Enter Student Mark 2:</label> 
 
<input type="text" id='m1' name=""><br> 
 
<label>Enter Student Name 3:</label> 
 
<input type="text" id='n2' name=""><br> 
 
<label>Enter Student Mark 3:</label> 
 
<input type="text" id='m2' name=""><br> 
 
<input type="button" value="Ranking" onclick="result()"> 
 
<div id='id'></div> 
 

 
<script type="text/javascript"> 
 
\t 
 
function result() 
 
{ 
 
\t var b=new Array(100); 
 
\t var n1=document.getElementById('n0').value; 
 
\t var m1=document.getElementById('m0').value; 
 
\t var n2=document.getElementById('n1').value; 
 
\t var m2=document.getElementById('m1').value; 
 
\t var n3=document.getElementById('n2').value; 
 
\t var m3=document.getElementById('m2').value; 
 

 

 
\t 
 

 
\t var a=new Array(100); 
 
\t var b=new Array(100); 
 
\t var n,m,j,i,temp,t,r="<br>Ranking<br><br>"; 
 

 
    for(i=0;i<3;i++) 
 
    { 
 

 
     n=document.getElementById('n'+i).value; 
 
     m=document.getElementById('m'+i).value; 
 
     m=parseInt(m); 
 
    \t a[i]={name:n,mark:m}; 
 
    } 
 

 
    for(i=0;i<3;i++) 
 
    { 
 
    
 
     for(j=i+1;j<3;j++) 
 
     { 
 
    \t if(a[j].mark>a[i].mark) 
 
    \t { 
 
      temp=a[i].mark; 
 
      t=a[i].name; 
 
      a[i].mark=a[j].mark; 
 
      a[i].name=a[j].name; 
 
      a[j].mark=temp; 
 
      a[j].name=t; 
 

 
      //console.log(a[i].name); 
 
    \t  //console.log(a[i].mark); 
 

 
    \t } 
 
     } 
 
    } 
 

 
    for(i=0;i<3;i++) 
 
    { 
 
     r=r+a[i].name+" "; 
 
     r=r+a[i].mark+"<br>"; 
 
    \t //console.log(a[i].name); 
 
    \t //console.log(a[i].mark); 
 
    } 
 

 

 
    document.getElementById('id').innerHTML=r; 
 

 
} 
 

 
</script> 
 
</body> 
 
</html>