在Javascript中声明一个空的二维数组?
我想在Javascript中创建一个二维数组,在其中存储坐标(x,y)。我还不知道有多少对坐标,因为它们将由用户输入动态生成 预定义二维阵列的示例:在Javascript中声明一个空的二维数组?,javascript,arrays,dynamic,2d,push,Javascript,Arrays,Dynamic,2d,Push,我想在Javascript中创建一个二维数组,在其中存储坐标(x,y)。我还不知道有多少对坐标,因为它们将由用户输入动态生成 预定义二维阵列的示例: var Arr=[[1,2],[3,4],[5,6]]; 我想我可以使用PUSH方法在数组末尾添加一条新记录 如何声明一个空的二维数组,以便在使用我的第一个Arr.push()时,它将被添加到索引0中,并且push写入的每一条记录都将采用下一个索引 这可能很容易做到,我只是一个JS新手,如果有人能编写一个简短的工作代码片段供我检查,我将不胜感激。
var Arr=[[1,2],[3,4],[5,6]];
我想我可以使用PUSH方法在数组末尾添加一条新记录
如何声明一个空的二维数组,以便在使用我的第一个Arr.push()时,它将被添加到索引0中,并且push写入的每一条记录都将采用下一个索引
这可能很容易做到,我只是一个JS新手,如果有人能编写一个简短的工作代码片段供我检查,我将不胜感激。谢谢您可以尝试以下方法:-
var arr = new Array([]);
推送数据:
arr[0][0] = 'abc xyz';
空数组是通过省略值来定义的,如下所示:
v=[[],[]]
a=[]
b=[1,2]
a.push(b)
b==a[0]
可以使用速记语法将一个数组嵌套到另一个数组中:
var twoDee = [[]];
您可以这样声明一个正则数组:
var arry = [];
然后,当您有一对值要添加到数组中时,只需执行以下操作:
arry.push([value_1, value2]);
是的,第一次调用arry.push
,这对值将被放置在索引0处
从nodejs repl:
> var arry = [];
undefined
> arry.push([1,2]);
1
> arry
[ [ 1, 2 ] ]
> arry.push([2,3]);
2
> arry
[ [ 1, 2 ], [ 2, 3 ] ]
当然,由于javascript是动态类型化的,因此不会有类型检查器强制要求数组保持二维。您必须确保只添加坐标对,而不执行以下操作:
> arry.push(100);
3
> arry
[ [ 1, 2 ],
[ 2, 3 ],
100 ]
如果你想像这样访问矩阵 矩阵[i][j] 我发现在循环中初始化它最方便
var matrix = [],
cols = 3;
//init the grid matrix
for ( var i = 0; i < cols; i++ ) {
matrix[i] = [];
}
var矩阵=[],
cols=3;
//初始化网格矩阵
对于(变量i=0;i
这会给你
[[],[],[]
所以
矩阵[0][0]
矩阵[1][0]
返回undefined,而不是错误“Uncaught TypeError:无法设置undefined的属性“0”我们通常知道列数,但可能不知道行数(记录)。这里是我的解决方案的一个例子,它利用了上面的大部分内容。(对于这里比我更有JS经验的人——几乎每个人——欢迎提出任何代码改进建议) 你怎么了
var arr2 = new Array(10,20);
arr2[0,0] = 5;
arr2[0,1] = 2
console.log("sum is " + (arr2[0,0] + arr2[0,1]))
应读出“总和为7”您可以使用函数用数组填充数组:
如果要在创建过程中进行初始化,可以使用和 5是行数,4是列数。ES6 矩阵
m
大小为3行5列(删除。填充(0)
以不以零初始化)
let Array2D=(r,c)=>[…数组(r)].map(x=>数组(c).fill(0));
设m=Array2D(3,5);
m[1][0]=2;//第二行,第一列
m[2][4]=8;//最后一行,最后一列
//打印格式化数组
console.log(JSON.stringify(m)
.replace(/(\[\[)(.*)(\]\])/g,[\n[$2]\n]')。replace(/),/g,'],\n')
);代码>创建一个对象并将该对象推入数组
const grid = Array.from(Array(3), e => Array(4));
var jSONdataHolder=功能(国家、纬度、伦敦){
这个国家=国家;
this.lat=lat;
this.lon=lon;
}
var jSONholderArr=[];
jSONholderArr.push(新的jSONdataHolder(“瑞典”、“60”、“17”));
jSONholderArr.push(新的jSONdataHolder(“葡萄牙”、“38”、“9”));
jSONholderArr.push(新的jSONdataHolder(“巴西”、“23”、“46”));
var nObj=jSONholderArr.length;
对于(变量i=0;i
如果我们不使用ES2015,也没有fill(),只需使用.apply()
看
let Array2D=(r,c,fill)=>Array.apply(null,新数组(r)).map(function(){return Array.apply(null,新数组(c)).map(function(){return fill})
log(JSON.stringify(Array2D(3,4,0));
log(JSON.stringify(Array2D(4,5,1))代码>//用于3 x 5阵列
var grid2 = Array.from(Array(3), e => {
console.log(e); // undefined
return Array(4); // a new Array.
});
Array.from(arrayLike,mapfn)
调用mapfn
,传递值undefined
,返回新数组(4)
创建迭代器并重复调用next
值。从next
,next()返回的值。值未定义。然后将该值undefined
,传递给新创建的数组的迭代器。每个迭代的值
都是未定义的
,如果您记录它,您可以看到它
var x = 3, y = 4;
var ar = new Array(x).fill(new Array(y).fill(0));
没必要这么麻烦!很简单
这将创建2*3的字符串矩阵
var数组=[];
变量x=2,y=3;
var s=‘abcdefg’;
对于(var i=0;i
var arr=[];
var行=3;
var列=2;
对于(变量i=0;i console.log(arr);
我知道这是一个旧线程,但我建议使用对象数组
而不是数组
。我认为这使代码更易于理解和更新
//使用有意义的变量名,如“points”,
//有什么比一个糟糕的海盗笑话更好的吗!
var点=[];
//创建一个对象文字,然后将其添加到数组中
变量点={x:0,y:0};
点。推(点);
//在1行中创建对象并将其添加到数组中
点推({x:5,y:5});
//从局部变量创建对象
var x=10;
变量y=8;
点推({x,y});
//也向用户询问一个要点
var响应=提示(“请输入坐标点。示例:3,8”);
var coords=response.split(“,”).map(数字);
push({x:coords[0],y:coords[1]});
//显示结果
var canvas=document.getEle
Array(11)
0:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
1:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
2:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
3:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
4:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
5:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
6:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
7:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
8:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
9:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
10:(12)[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
const matrix = new Array(5).fill(0).map(() => new Array(4).fill(0));
[...Array(3)].map(x=>Array(5).fill(0))
var jSONdataHolder = function(country, lat, lon) {
this.country = country;
this.lat = lat;
this.lon = lon;
}
var jSONholderArr = [];
jSONholderArr.push(new jSONdataHolder("Sweden", "60", "17"));
jSONholderArr.push(new jSONdataHolder("Portugal", "38", "9"));
jSONholderArr.push(new jSONdataHolder("Brazil", "23", "-46"));
var nObj = jSONholderArr.length;
for (var i = 0; i < nObj; i++) {
console.log(jSONholderArr[i].country + "; " + jSONholderArr[i].lat + "; " +
jSONholderArr[i].lon);
}
new Array(3).fill(new Array(5).fill(0))
const grid = Array.from(Array(3), e => Array(4));
var grid2 = Array.from(Array(3), e => {
console.log(e); // undefined
return Array(4); // a new Array.
});
var array=[];
var x = 2, y = 3;
var s = 'abcdefg';
for(var i = 0; i<x; i++){
array[i]=new Array();
for(var j = 0; j<y; j++){
array[i].push(s.charAt(counter++));
}
}
var x = 3, y = 4;
var ar = new Array(x).fill(new Array(y).fill(0));