如果它是一个函数,则将值推送到 javascript 数组的问题
Posted
技术标签:
【中文标题】如果它是一个函数,则将值推送到 javascript 数组的问题【英文标题】:Issue with pushing values to a javascript array if it is a function 【发布时间】:2011-09-24 01:45:49 【问题描述】:我正在尝试创建一组按钮,其行为类似于列表,其中一个数组是从所选值创建的。
下面是检查数组中是否已经存在值的函数,如果不存在则不会添加新值。
function linearSearch(arrayName, sValue)
Array.prototype.exists = function(search)
for (var i=0; i<this.length; i++)
if (this[i] == search) return true;
arrayName.push(sValue);
return false;
这是调用此函数的 jquery click 函数(列出的项目):
con_array = [];
$('.con_button').live('click', function (e)
e.stopPropagation()
$(this).html('<div class="fun_button_center"></div>');
con_value = $(this).attr('data-value');
linearSearch(con_array, con_value);
alert(con_array);
);
如果该函数在没有参数的 click 函数内部,则该函数可以正常工作。然而在这种情况下,因为我可以重复使用它,所以它是最佳的,但 alert(con_array); 不会显示任何值
【问题讨论】:
【参考方案1】:至少,这样写你的`linearSearch函数:
function linearSearch(arrayName, sValue)
Array.prototype.exists = function(search)
for (var i=0; i<this.length; i++)
if (this[i] == search) return true;
;
if (arrayName.exists(sValue) return true;
arrayName.push(sValue);
return false;
不过,以这种方式对 Array
进行猴子补丁很脆弱,因此您可以在全局范围内对其进行猴子补丁(仍然很难看,但至少它更快且随处可用:
Array.prototype.exists = function(search)
for (var i=0; i<this.length; i++)
if (this[i] == search) return true;
;
function linearSearch(arrayName, sValue)
if (arrayName.exists(sValue) return true;
arrayName.push(sValue);
return false;
或者你可以内联那个循环:
function linearSearch(arrayName, sValue)
for (var i=0; i<arrayName.length; i++)
if (arrayName[i] == sValue) return true;
arrayName.push(sValue);
return false;
【讨论】:
ES5 有Array.prototype.indexOf()
- 不需要exists
函数。
感谢您提供的众多选择。我会选择最简单的而不使用原型,数组包含不超过 5 个值。谢谢
@Alnitak: ***.com/questions/3629183/…【参考方案2】:
你可以这样试试:
Array.prototype.exists = function(search)
for (var i=0; i<this.length; i++)
if (this[i] == search) return true;
this.push(search);
return true;
function linearSearch(arrayName, sValue)
arrayName.exists(sValue);
【讨论】:
以上是关于如果它是一个函数,则将值推送到 javascript 数组的问题的主要内容,如果未能解决你的问题,请参考以下文章
有没有更好的方法将值推送到表单控件,其中数组作为 Angular 中的值
如何按键过滤数组并使用javascript将值推送到另一个数组