簡體   English   中英

什么是 Javascript 中等效的 C/C++ 數據結構?

[英]What is a C/C++ data structure equivalent in Javascript?

假設我在 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;
...

定義和創建用戶定義結構數組的等效方法是什么。

謝謝

如果您要為對象預定義布局,您可能需要使用構造函數樣式的函數。

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';

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

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
}

希望它有幫助。

<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>

通過結構解決的一個常見問題是排名系統。 一個數組,包含一些用戶的名稱和數量,然后根據數量對用戶進行排序。 這是這個問題的javascript實現。這里使用對象數組

 <!DOCTYPE html> <html> <head> <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"> function result() { var b=new Array(100); var n1=document.getElementById('n0').value; var m1=document.getElementById('m0').value; var n2=document.getElementById('n1').value; var m2=document.getElementById('m1').value; var n3=document.getElementById('n2').value; var m3=document.getElementById('m2').value; var a=new Array(100); var b=new Array(100); 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); a[i]={name:n,mark:m}; } for(i=0;i<3;i++) { for(j=i+1;j<3;j++) { if(a[j].mark>a[i].mark) { 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); //console.log(a[i].mark); } } } for(i=0;i<3;i++) { r=r+a[i].name+" "; r=r+a[i].mark+"<br>"; //console.log(a[i].name); //console.log(a[i].mark); } document.getElementById('id').innerHTML=r; } </script> </body> </html>

答案很簡單。

const address = {
    name: ""
    id: 1,
    address: ""
}

或動態

const address = (name, id, address) => {
// Here your checks if enters is correct
    return {name, id, address}
}

如果你使用 TypeScript? 就是這么簡單。

interface address {
    name: string;
    id: number;
    address: string;
}

const adress: adress = {
    .....
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM