Javascript - 向函数发送数组数组
Javascript - Send an array of arrays to a function
我有一个从数组返回列表的函数。我用这些数组的数组调用该函数。
这是代码:
<body>
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script>
jQuery(document).ready(function($) {
function getList(liste) {
var control = ['resize', 'scroll', 'zoom', 'focus', 'blur', 'select', 'change', 'submit', 'reset'],
keyboard= ['keydown', 'keyup', 'keypress', 'input'],
mouse = ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mousemove', 'mouseout', 'mousewheel', 'wheel'],
all = control.concat(keyboard, mouse);
console.log(liste);
tab = [];
for (var i=0; i < liste.length; i++) {
tab = tab.concat(liste[i]);
}
console.log('Array : ' + tab);
return tab;
} // End getList()
console.log('Function return : ' + getList(['control', 'keyboard']));
});
</script>
</body>
</html>
如果我做一个 getList([控件,键盘]);我有一个错误,因为浏览器不知道控制或键盘。逻辑,因为它们是函数的本地。我用一个'函数以字符串方式返回参数列表发送这些值。
我无法将数组定义放在全局中,因为我在许多脚本中的许多位置调用此函数。
在我的例子中,我应该有
['resize', 'scroll', 'zoom', 'focus', 'blur', 'select', 'change', 'submit', 'reset','keydown', 'keyup', 'keypress', 'input']
您可以使用将
名称映射到列表的对象来实现目标。在下面的代码中,lists
就是这样一个对象。您可以编写 lists['control']
或 lists.control
来获取与名称 'control'
对应的列表。
function getList(names) {
var lists = {
control: ['resize', 'scroll', 'zoom', 'focus', 'blur', 'select', 'change', 'submit', 'reset'],
keyboard: ['keydown', 'keyup', 'keypress', 'input'],
mouse: ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mousemove', 'mouseout', 'mousewheel', 'wheel']
};
var result = [];
for (var i = 0; i < names.length; i++) {
result = result.concat(lists[names[i]]);
}
return result;
}
若要使用此函数,请确保在列表名称两边用单引号编写getList(['control', 'keyboard'])
。
编写函数的一种更好的方法是使用 arguments
关键字。这允许您将任意数量的名称传递给函数,而不是名称列表。这样:
function getList() {
var lists = {
control: ['resize', 'scroll', 'zoom', 'focus', 'blur', 'select', 'change', 'submit', 'reset'],
keyboard: ['keydown', 'keyup', 'keypress', 'input'],
mouse: ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mousemove', 'mouseout', 'mousewheel', 'wheel']
};
var result = [];
for (var i = 0; i < arguments.length; i++) {
result = result.concat(lists[arguments[i]]);
}
return result;
}
alert(getList('control', 'keyboard').join(', '));
你可以看到它在JSFiddle上运行:http://jsfiddle.net/tro6dmb2/
不确定它是否适合您的情况,但也许您应该像这样getListArray = [];
在getList
开头声明空数组,为其分配返回值,然后调用 console.log('Function return : ' + getListArray);
。请注意,getListArray
是在没有var
的情况下声明的,因此它将是全局的,并且每次调用getList
时都会被覆盖。
相关文章:
- 数组函数不适用于从元素文本创建的JavaScript数组
- 如何在javascript中求解pack数组函数
- 制作一个javascript的数组函数
- 获取元素的位置并创建它的数组函数
- 茉莉花中的 SpyOn javascript 数组函数
- 自定义数组函数不接受参数
- 使用原型的自定义数组函数.新的 MyArray(1,2,3,4) 不工作
- Java 脚本随机化数组函数
- 在 Restangular 集合上使用 lodash 数组函数
- 比较数组函数返回未定义
- Javascript中嵌套for循环与数组函数的性能
- 多维数组函数在JS中不起作用
- Javascript数组函数有我看不到的错误
- 数组函数外的javascript
- 在数组/函数中循环时使用换行符
- 拼接javascript数组函数获胜't删除项目
- 为什么不'这个js数组函数不能工作
- 如何在我自己的数组原型函数中使用数组函数
- 在javascript中定义数组函数
- Jquery动态树数组函数