Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-使用数据创建数组而不循环_Javascript_Arrays_Loops_Insert_Initialization - Fatal编程技术网

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都使用循环