我想调用一个函数使用数组作为参数:
const x = ['p0', 'p1', 'p2'];
call_me(x[0], x[1], x[2]); // I don't like it
function call_me (param0, param1, param2 ) {
// ...
}
是否有更好的方法将x的内容传递给call_me()?
我想调用一个函数使用数组作为参数:
const x = ['p0', 'p1', 'p2'];
call_me(x[0], x[1], x[2]); // I don't like it
function call_me (param0, param1, param2 ) {
// ...
}
是否有更好的方法将x的内容传递给call_me()?
当前回答
你可以在更基本的形式中使用展开运算符
[].concat(...array)
对于返回数组但希望作为参数传递的函数
例子:
function expectArguments(...args){
return [].concat(...args);
}
JSON.stringify(expectArguments(1,2,3)) === JSON.stringify(expectArguments([1,2,3]))
其他回答
函数参数也可以是数组:
函数foo([a,b,c], d){ console.log (a, b, c, d); } foo((1、2、3)、4)
当然也可以用spread:
函数foo(a, b, c, d){ Console.log (a, b, c, d); } foo(…[1,2,3], 4)
注意这
function FollowMouse() {
for(var i=0; i< arguments.length; i++) {
arguments[i].style.top = event.clientY+"px";
arguments[i].style.left = event.clientX+"px";
}
};
//---------------------------
html页面
<body onmousemove="FollowMouse(d1,d2,d3)">
<p><div id="d1" style="position: absolute;">Follow1</div></p>
<div id="d2" style="position: absolute;"><p>Follow2</p></div>
<div id="d3" style="position: absolute;"><p>Follow3</p></div>
</body>
可以调用函数与任何参数
<body onmousemove="FollowMouse(d1,d2)">
or
<body onmousemove="FollowMouse(d1)">
假设call_me是一个全局函数,因此不需要设置此值。
var x = ['p0', 'p1', 'p2'];
call_me.apply(null, x);
在ES6标准中有一个新的扩展运算符…这就是它的作用。
call_me(...x)
除IE外,所有主流浏览器都支持。
展开操作符可以做许多其他有用的事情,链接的文档在这方面做得非常好。
为什么不传递整个数组并在函数中根据需要处理它呢?
var x = [ 'p0', 'p1', 'p2' ];
call_me(x);
function call_me(params) {
for (i=0; i<params.length; i++) {
alert(params[i])
}
}