gpt4 book ai didi

javascript原型(prototype)循环for in array

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

我正在开发一个项目,该项目使用了大量“javascript”。我有很多“ajax”调用,它总是返回“json”数组。出于有用的原因,我创建了两个 Array 对象的原型(prototype)(“in_array”函数和“shuffle”函数)。

自从我做了原型(prototype)以来,我所有的“for in”循环都被破坏了(两次显示“未定义”......)我查了谷歌和 stackoverflow,现在我知道我的错误了。当然,如果我删除原型(prototype),“未定义”就会消失。

但是,我没有找到所有答案。

首先,我很多次看到,使用“for in”循环是不好的,为什么?

我也使用“PHP”或“python”进行开发,并且我确实喜欢“for in”或“foreach”循环。

其次,我有很多“for in”循环,所以说实话,我更喜欢改变我的原型(prototype),而不是改变我的循环。将我的原型(prototype)切换为普通函数并保留“for in”循环有那么脏吗?

第三,我读到 JQuery 可以纠正这个错误。我的项目确实有JQuery,解决方案在说什么(我只读到JQuery可以纠正这个问题,而不是如何纠正)。

谢谢,

编辑:我的原型(prototype)代码:

// FONCTIONS ARRAY
Array.prototype.shuffle = function () {
for (var i = this.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var tmp = this[i];
this[i] = this[j];
this[j] = tmp;
}

return this;
}

Array.prototype.in_array = function (needle) {
for(var i = 0; i < this.length; i++) {
if(this[i] == needle)
return true;
}
return false;
}

最佳答案

这是 map 函数的样子。这是我凭空写出来的,所以可能会有错误。

function object_map(object, callback) {
var key, ret = {};
for (key in object) {
if (Object.prototype.hasOwnProperty.call(object, key)) {
ret[key] = callback(key, object[key]);
}
}
return ret;
}

关于javascript原型(prototype)循环for in array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16634451/

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