什么是 Javascript 中等效的 C/C++ 数据结构?

Mar*_*k K 3 javascript c 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;
...
Run Code Online (Sandbox Code Playgroud)

定义和创建用户定义结构数组的等效方法是什么。

谢谢

lin*_*lnk 5

如果您要为对象预定义布局,您可能需要使用构造函数样式的函数。

function address() {
    this.name = null;
    this.id = null;
    this.address = null;
}
Run Code Online (Sandbox Code Playgroud)

数组没有类型化,您不必指定长度。

var adrs = [];
Run Code Online (Sandbox Code Playgroud)

你可以address像这样创建一个新实例

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

然后你可以push将新项目放到数组上。

adrs.push(item);
Run Code Online (Sandbox Code Playgroud)

或者,您可以从数组中添加一个新项目,然后通过索引器访问它。

// 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';
Run Code Online (Sandbox Code Playgroud)

  • @Mark K 当你调用 `push` 时,数组会增加它的计数器并且是基于 0 的,所以在添加第一项之后你可以使用 `adrs[0]` 访问它,第二项将是 `adrs[1]`,等等。 (2认同)

Pab*_*ruz 4

等效的方法是创建一个关联数组的数组。

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

在此之后,您将能够执行以下操作:

arr[0].name = "new name 1";
Run Code Online (Sandbox Code Playgroud)

或者访问元素:

if (arr[1].name == "name 2") { // will be true
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。