从JavaScript中的关联数组中删除元素 - >非常慢?

时间:2014-03-24 11:11:52

标签: javascript jquery

我想从关联数组中删除一个元素。数组如下:

array[propertyname] = property;

此数组中填充了一些数据(少于10个条目),并显示在属性窗口中。

在某些页面上,您可以单击条目旁边的删除按钮并删除相应的条目。为了实现这个功能,我们称之为:

$d(document).on('click', '.property_del[type="button"]', function(event) {
   for (property in selectedGroup.properties) {
      if(property == $d(this).attr('id').replace("_buttondel", "")){
         continue;
      }else{
         temp_array[property] = selectedGroup.properties[property];
      }
selectedGroup.properties = temp_array;
});

这项工作到目前为止,所选条目在按钮点击事件后被删除,但它很慢。删除的第二种方法与第一种方法一样慢:

delete selectedGroup.properties[$d(this).attr('id').replace("_buttondel", "")];

我该怎样做才能让它更快?

THX !!

2 个答案:

答案 0 :(得分:4)

也许for循环中的jquery选择器正在减慢速度。这会加快速度:

$d(document).on('click', '.property_del[type="button"]', function(event) {
   var value = $d(this).attr('id').replace("_buttondel", "");
   for (property in selectedGroup.properties) {
      if(property == value){
         continue;
      }else{
         temp_array[property] = selectedGroup.properties[property];
      }
selectedGroup.properties = temp_array;
});

答案 1 :(得分:1)

你将在jquery“构造函数”上浪费大量时间,就像在$(this)循环中for一样。根据{{​​1}}中的属性数量,这将是相当长的时间。 首先,我要用

selectedGroup.properties
在for循环之外