我可以用Javascript向数组添加函数吗

Can I add a function to an array in Javascript?

本文关键字:添加 函数 数组 Javascript 我可以      更新时间:2023-12-27

有人建议我使用以下代码:

var activityArray = [];
activityArray.push("Loading content 1");
activityArray.push("Loading content 2");
activityArray.push("Loading content 3");
activityArray.push("Loading content 4");
//find the item we want to delete
var index = activityArray.indexOf('Loading content 4');// returns 3
activityArray.splice(index,1)//remove the item at index 3

我有很多地方想向数组中添加元素,所以"activityArray.push"似乎是一种非常简单的方法。

我还有很多地方想从数组中删除元素。有没有一种方法可以让我用代码删除项目,并将其作为函数添加到activityArray中,这样我就可以说:

activityArray.pull("Loading content 4"); 

是的,Javascript的原型继承系统使将新功能移植到现有对象上变得非常容易。

与您的代码一样,此版本将返回已删除元素的第一个实例,如果数组中不存在该元素,则返回undefined

Array.prototype.pull = function(element) { 
  var index = this.indexOf(element); 
  var removed = undefined;
  if(index >= 0)
    removed = this.splice(index,1); 
  return removed;
}

如果您只想将该方法添加到单个数组中,

myArray = [1,2,3,4,5,6];
myArray.pull = function(element) { 
  var index = this.indexOf(element); 
  var removed = undefined;
  if(index >= 0)
    removed = this.splice(index,1); 
  return removed;
}
myArray.pull(3) // -> [1,2,4,5,6]
[3,2,1].pull(2) // -> exception

您可以为实例特定的方法向数组原型添加方法。

Array.prototype.pull = function(content) {
    var index = this.indexOf(content);
    this.splice(index, 1);
};
var activityArray = [];
activityArray.push("Loading content 1");
activityArray.push("Loading content 2");
activityArray.push("Loading content 3");
activityArray.push("Loading content 4");
activityArray.pull("Loading content 4"); 
>> ["Loading content 1", "Loading content 2", "Loading content 3"]

如果可以跳过使用简单的Array,请尝试named array''object语法:

var activityArray = {};
activityArray["Loading content 1"] = "Loading content 1";
activityArray["Loading content 2"] = "Loading content 2";
activityArray["Loading content 3"] = "Loading content 3";
activityArray["Loading content 4"] = "Loading content 4";
// To remove simply use the `delete` keyword
delete activityArray["Loading content 4"];