gpt4 book ai didi

Javascript/ES6 单一类型数组

转载 作者:行者123 更新时间:2023-11-30 14:27:09 25 4
gpt4 key购买 nike

一个JS数组如何限制为一种类型?例如。字符串。

假设我有以下代码:

const arr = [];
arr.push('this is a string'); // accept
arr.push('I do not want numbers in this array'); // accept
arr.push(5); // reject - it's not a string!

如何拒绝最后一次推送或任何其他尝试添加非字符串类型变量的推送?我能想到的唯一方法是制作一个自定义类,它扩展 Array 并覆盖函数,例如 push,以检查要添加的元素的类型,如果不是字符串类型则抛出错误。然而,这看起来非常核心且容易出错!

最佳答案

生成一个继承自 Array 的新构造函数。

function array2 (){
var obj = [];
Object.setPrototypeOf(obj,array2.prototype);
return obj;
}

array2.prototype = Object.create(Array.prototype);

array2.prototype.push = function(){
if(Array.prototype.slice.call(arguments).some(function(d,i){return typeof d !== "string"})){
return;
}
return Array.prototype.push.apply(this,arguments);
}

var u = new array2;
u.push(3); //u still empty;
u.push("3"); //returns 1, u is ["3"];

如果你愿意,你可以修改和抛出。等等

关于Javascript/ES6 单一类型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51755797/

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