gpt4 book ai didi

javascript - 扩展数组属性javascript

转载 作者:行者123 更新时间:2023-12-02 18:52:27 26 4
gpt4 key购买 nike

我想用简单的函数扩展所有数组的属性(这是我的作业)

Array.prototype.remove=(function(value){
var i;
var cleanedArray = new Array();
for(i= 0;i<this.length;i++)
{
if(value !== this[i])
{
cleanedArray.push(this[i]);
}
}

this.length = cleanedArray.length;
for(i=0;i<this.length;i++)
{
this[i] = cleanedArray[i];
} })();

var simpleArray = new Array(3,5,6,7,8,1,1,1,1,1,1,1);
simpleArray.remove(1); console.log(simpleArray);

但是我在控制台中收到错误,有人可以帮助我吗?

错误:

Uncaught TypeError: Property 'remove' of object [object Array] is not a function 

最佳答案

要声明函数,您不需要那些括号,也不需要调用它。

您可以将其声明为

  Array.prototype.remove=function(value){ // <== no opening parenthesis before function
var i;
var cleanedArray = new Array();
for(i= 0;i<this.length;i++) {
if(value !== this[i])
{
cleanedArray.push(this[i]);
}
}
this.length = cleanedArray.length;
for(i=0;i<this.length;i++) {
this[i] = cleanedArray[i];
}
}; // <== simply the end of the function declaration

看来您对 IIFE 感到困惑但您在这里不需要该构造。

如果你希望你的函数不可枚举,你可以使用 Object.defineProperty 来实现。 :

Object.defineProperty(Array.prototype, "remove", {
enumerable: false, // not really necessary, that's implicitly false
value: function(value) {
var i;
var cleanedArray = new Array();
for(i= 0;i<this.length;i++) {
if(value !== this[i])
{
cleanedArray.push(this[i]);
}
}
this.length = cleanedArray.length;
for(i=0;i<this.length;i++) {
this[i] = cleanedArray[i];
}
}
});

Demonstration

关于javascript - 扩展数组属性javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15682410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com