创建新数组和清除长度之间的区别[重复]

Posted

技术标签:

【中文标题】创建新数组和清除长度之间的区别[重复]【英文标题】:Difference between create a new Array and clear the length [duplicate] 【发布时间】:2016-08-01 08:15:38 【问题描述】:

如果我必须删除数组中的所有项目,使用new Arraylength = 0 有什么区别?在示例中,显然结果看起来是一样的。

function MyCtrl($scope)  
    
    $scope.arrayData = ["1", "2", "3"];
    
    $scope.newArray1 = function()
    	$scope.arrayData = new Array();
        
    
    $scope.newArray2 = function()
    	$scope.arrayData = [];
    
        
    $scope.lengthZero = function()
    	$scope.arrayData.length = 0;
        
            
    $scope.populate = function()
    	$scope.arrayData.push("1", "2", "3");
        
 
 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app ng-controller="MyCtrl">
Data:
</h2><br>
   <ul>
        <li ng-repeat="data in arrayData">data</li>
    </ul> 
    <button ng-click="newArray1()">New Array - 1st method</button>
    <button ng-click="newArray2()">New Array - 2nd method</button>
    <button ng-click="lengthZero()">Length = 0</button>
    
    <button ng-click="populate()">Populate</button>
</div>

【问题讨论】:

【参考方案1】:

仅使用[].length = 0 之间存在很大差异。

如果您使用= [],您将为变量分配一个新的引用,失去对原始的引用。通过使用.length = 0,您将清除原始数组,保留原始引用。

【讨论】:

正如你所说,使用[].length = 0 有很大的不同。当这种差异影响结果时,你能想出一个实际的场景吗?【参考方案2】:

使用array = new Array();,您将创建一个新引用。

清除数组并保留引用的更好方法是:

var array = [1,2,3,4,5];

while (array.length) 
    array.pop();

也可以看看这个完全相同的问题:Difference between Array.length = 0 and Array =[]?

【讨论】:

这不是更好的方法。 .length = 0 会是更好的方法。 @RajaprabhuAravindasamy:为什么会更好?有参考吗? ***.com/a/1232046/1209018 谢谢,我不知道这适用于所有浏览器,甚至更快。所以你是对的,最好使用.length = 0;

以上是关于创建新数组和清除长度之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在一个数组中清除该数组的重复元素,数组不准浪费长度。

尺寸和长度方法之间的区别?

ES6-数组的新方法

用Javascript创建数组[重复]

#leetcode刷题之路3-无重复字符的最长子串

Java面试题:ArrayList和LinkedList的区别