Javascript Java脚本2D数组分配
我想在Java脚本中分配一个2D数组 我想在JavaScript中做一些类似的事情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
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}