JavaScript-使用数据创建数组而不循环
我想知道是否有可能创建一个数组并使用相同的对象初始化它,而不必在每个元素上循环。我不想循环,因为我可能需要插入很多元素。 这就是我希望能够做到的:JavaScript-使用数据创建数组而不循环,javascript,arrays,loops,insert,initialization,Javascript,Arrays,Loops,Insert,Initialization,我想知道是否有可能创建一个数组并使用相同的对象初始化它,而不必在每个元素上循环。我不想循环,因为我可能需要插入很多元素。 这就是我希望能够做到的: var array=new Array(10000); 我希望数组的每个元素都是相同的对象(除了未定义的:) 不用这样做 for(i=0;i<array.length;i++) array[i]=object; for(i=0;i当您执行新建数组(10000)时,JS中的数组不需要为元素分配存储空间;您得到未定义的元素仅仅是因为没有
var array=new Array(10000);
我希望数组的每个元素都是相同的对象(除了未定义的:)
不用这样做
for(i=0;i<array.length;i++)
array[i]=object;
for(i=0;i当您执行新建数组(10000)时,JS中的数组不需要为元素分配存储空间;
您得到未定义的元素仅仅是因为没有这样的元素,甚至没有为它们分配存储空间。要创建数组元素,您必须显式地放置它们
但老实说,我不明白你为什么需要它。这就足够了:
var v = array[i] || object;
如果未定义元素,v
将始终具有元素或对象。在执行新建数组(10000)时,JS中的数组不需要为元素分配存储
您得到未定义的元素仅仅是因为没有这样的元素,甚至没有为它们分配存储空间。要创建数组的元素,您必须显式地放置它们
但老实说,我不明白你为什么需要它。这就足够了:
var v = array[i] || object;
如果未定义元素,v
将始终具有元素或对象。否和是
不,在JS中没有类似的构造函数:
var a = new Array(10000, someObject);
// or
var a = Array.fill(0, 10000, someObject);
是的,因为您可以手动执行:)
在您的代码中,最好这样做:
for (var i = 0, iMax = array.length; i < iMax; i++) {
array[i]=object;
}
for(变量i=0,iMax=array.length;i
在计数器初始化的内部添加变量
使用另一个局部变量,而不是array.length,因为它的作用域稍近一些
不,是的
不,在JS中没有类似的构造函数:
var a = new Array(10000, someObject);
// or
var a = Array.fill(0, 10000, someObject);
是的,因为您可以手动执行:)
在您的代码中,最好这样做:
for (var i = 0, iMax = array.length; i < iMax; i++) {
array[i]=object;
}
for(变量i=0,iMax=array.length;i
在计数器初始化的内部添加变量
使用另一个局部变量,而不是array.length,因为它的作用域稍近一些
js中没有这样的内置功能,但您可以为自己创建一个;是iam在函数内部循环myArray
function myArray(size,defaultObj)
{
var _array=[];
for (i=0;i<size;i++)
{
_array[i]=defaultObj
}
return _array;
}
var myArray= myArray(3,"hello");
alert(myArray[2]);
函数myArray(大小,defaultObj)
{
var_数组=[];
对于(i=0;ijs中没有这样的内置功能,但您可以为自己创建一个;是的,iam在函数myArray
中循环
function myArray(size,defaultObj)
{
var _array=[];
for (i=0;i<size;i++)
{
_array[i]=defaultObj
}
return _array;
}
var myArray= myArray(3,"hello");
alert(myArray[2]);
函数myArray(大小,defaultObj)
{
var_数组=[];
对于(i=0;i可能不是一个实用的解决方案,并且不会在IE<9中工作,但从技术上讲没有(明确的)循环:
可能不是一个实用的解决方案,在IE<9中也不起作用,但技术上没有(明确的)循环:
不,我认为这在香草JavaScript中是不可能的
此代码将创建一个包含10个零的数组
:
var array = [ ] , filler = 1 ;
var i = 0 , length = 10 ;
while(i < length) array.push(filler) , i = i + 1;
alert("(!) array >> " + array) ;
var数组=[],filler=1;
变量i=0,长度=10;
而(i>“+数组);
()不,我认为这在普通JavaScript中是不可能的
此代码将创建一个包含10个零的数组
:
var array = [ ] , filler = 1 ;
var i = 0 , length = 10 ;
while(i < length) array.push(filler) , i = i + 1;
alert("(!) array >> " + array) ;
var数组=[],filler=1;
变量i=0,长度=10;
而(i>“+数组);
()这是我找到的最好的解决方案,不使用eval,循环也不太长,因此浏览器不会崩溃:
var j=0,l=new Object();
l.id=1
var array=[l];
while(array.length<10000){
array=array.concat(array);
}
array=array.slice(0,10000);
console.log(array.length);
var j=0,l=newobject();
l、 id=1
var数组=[l];
while(array.length这是我找到的最好的解决方案,不使用eval,循环也不太长,因此浏览器不会崩溃:
var j=0,l=new Object();
l.id=1
var array=[l];
while(array.length<10000){
array=array.concat(array);
}
array=array.slice(0,10000);
console.log(array.length);
var j=0,l=newobject();
l、 id=1
var数组=[l];
while(array.length我想这就是你要找的
function createMatrix ()
{
var matrix = Array.prototype.slice.call(arguments);
return matrix.length > 0 ? matrix : [0] ;
}
创建任意维度的矩阵createMatrix()-->[0]
createMatrix(1,2,3)-->[1,2,3]-向量行
createMatrix([1]、[2]、[3])-->[[1]、[2]、[3]]-向量列
创建矩阵(
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
)
-->[[1,2,3],[4,5,6],[7,8,9]]-3×3矩阵
我想这就是你要找的
function createMatrix ()
{
var matrix = Array.prototype.slice.call(arguments);
return matrix.length > 0 ? matrix : [0] ;
}
创建任意维度的矩阵createMatrix()-->[0]
createMatrix(1,2,3)-->[1,2,3]-向量行
createMatrix([1]、[2]、[3])-->[[1]、[2]、[3]]-向量列
创建矩阵(
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
)
-->[[1,2,3],[4,5,6],[7,8,9]]-3×3矩阵
我想说你的问题的答案是:这不可能做到
不是Java语言,也可能不是任何其他编程语言
如果您考虑底层机器,您需要的是:是否可以为
n特定类型的值可以初始化为相同的值而不循环
我想只有在底层机器中有某种特殊的机制,例如清空内存区域的方法时,才可能没有循环。但即使如此,在大多数情况下,这种机制实际上会循环所有值。我想回答你的问题:这是不可能的
不是Java语言,也可能不是任何其他编程语言
如果您考虑底层机器,您需要的是:是否可以为
n特定类型的值可以初始化为相同的值而不循环
我想只有在底层机器中有一些特殊的机制,比如清空内存区域的方法时,才可能没有循环。但即使如此,在大多数情况下,该机制实际上会循环所有值。我想你可以做如下操作,我尝试过在不使用循环的情况下填充50个1,但我认为内部spl它和join都使用循环