Javascript Java脚本2D数组分配

Javascript Java脚本2D数组分配,javascript,Javascript,我想在Java脚本中分配一个2D数组 我想在JavaScript中做一些类似的事情 typedef struct { int itemA, int itemB, string testC } myStruc; myStruct MyArray [100]; 如何做到这一点 有几种在Javascript中创建数组的方法,最接近您想要做的方法应该是: var myArray = new Array("someString1", "someString2", "someStr

我想在Java脚本中分配一个2D数组

我想在JavaScript中做一些类似的事情

typedef struct
{
   int  itemA,
   int  itemB,
   string testC
} myStruc;

myStruct MyArray [100];

如何做到这一点

有几种在Javascript中创建数组的方法,最接近您想要做的方法应该是:

var myArray = new Array("someString1", "someString2", "someString3", ...);
您可以用实际对象替换
“someString1”

您还可以使用数组构造函数设置初始长度:

var myArray = new Array(5);
myArray[0] = ...;
myArray[1] = ...;
Javascript中的数组实际上非常松散——在访问通常超出数组边界的元素之前,甚至不需要定义长度


看一看。

听起来您想要对象数组的属性,但我可能误解了

你可能只需要像

function Person(first, last) {
    this.first = first;
    this.last = last;
}

var person = new Person("John", "Dough");

PS:在Java脚本中有几种方法可以实现这一点

var arr = []
arr[0] = { "itemA": "A", "itemB": "B", "itemC": "C" }
arr[1] = { "itemA": "A", "itemB": "B", "itemC": "C" }
我认为您正在尝试将静态语言构造应用于动态的、不同的Javascript世界。Javascript并不像许多语言那样真正具有数组的概念

在Javascript中,数组是一种特殊类型的对象(本身只是一个散列),具有特殊的长度属性。您在上面看到的整数“索引”(即arr[0]中的0)只是具有查找功能。特殊长度属性定义为比最大整数键大一个。在我上面的例子中,arr.length是2。但如果我要分配:

arr[100] = { "itemA": "A", "itemB": "B", "itemC": "C" }
那么arr.length将是101,即使我没有分配2到99之间的任何元素

类似地,我们通常不会在Javascript中预定义结构之类的对象,因此匿名对象将在很大程度上实现您想要的功能(或者使用文档化的工厂函数,如Ken的示例)

“new Array()”不是必需的,因为简洁的“var a=[];”语法更快。:)

如果您确实希望为特定结构的数组分配100个元素,可以执行以下操作:

arr = [];

for (i=0; i<100; i++) {
   arr[i] = {itemA: <value>, itemB: <value>, textC: <string>, ... };
}
arr=[];

对于(i=0;i,如果我了解您需要动态创建一个指定长度的数组,并填充您自己的结构

在js中,结构是一个类似于

// typedef struct { type prop1 , ... , type propN } myStructName; function myStructName(){} myStructName.prototype = { 'constructor' : myStructname, 'prop1' : defaultVal1, // ... 'propN' : defaultValN }; */ 函数myStruct(){

//参数
变量a=参数[0],b=参数[1],c=参数[2];
//检查参数a的INT类型
如果(typeof a==“number”&&(a+”).indexOf('.')==-1{this['itemA']=a;}
//检查参数b的INT类型
如果(typeof b==“number”&&(b+”).indexOf('.')==-1{this['itemB']=b;}
//检查参数b的INT类型
如果(typeof c==“string”/*检查字符串长度?!*/){this['testC']=c;}
}
//myStruct原型
myStruct.prototype={
//建造师
“构造函数”:myStruct,
//itemA的默认值
“itemA”:0,
//itemB的默认值
“itemB”:0,
//testC的默认值
“testC”:”
};
/*
静态函数defaultLength([,length])
设置/获取defaultLength值。
@参数{无符号整数| void}长度
@返回{void | unsigned int}
*/
myStruct.defaultLength=函数(){
//返回默认值
if(arguments.length==0){
返回myStruct.\u默认值;
}否则{
//设置默认值
var l=参数[0];
myStruct._default=(typeof l==“number”和(&(l+)).indexOf('.')==-1)?Math.abs(l):0;
}
};
//@var{unsigned int}myStruct.\u默认值=0
myStruct.\u默认值=0;
/*
静态函数makeArray(长度)
@param{unsigned int}length数组的长度
@返回{array}
*/
myStruct.makeArray=函数(长度){
//检查长度是否为无符号整数
length=(typeof length==“number”&&(length+).indexOf('.')==-1)?Math.abs(length):myStruct.defaultLength();
//局部阵列
变量数组=[],i=0;
//填充数组
对于(;i
很有趣。我想知道如果在js中为数组指定了“越界”会发生什么。jsight shows的结构实际上将对象分配给每个数组元素,因为大括号表示对象。但是您可以访问对象和数组样式表示法中的属性:var itemA1=arr[1][“itemA”];var itemA1=arr.1.itemA; // typedef struct { type prop1 , ... , type propN } myStructName; function myStructName(){} myStructName.prototype = { 'constructor' : myStructname, 'prop1' : defaultVal1, // ... 'propN' : defaultValN }; /* Copyrights (c) 2011 - Matteo Giordani < matteo.giordani90@gmail.com > MIT-Style License typedef struct{ int itemA , int itemB , string testC } myStruct myStruct arr[10];

    JS way

    function myStruct( a , b , c )
        @param  {int}       a
        @param  {int}       b
        @param  {string}    c
        @return {object}