Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在函数的参数中设置数组_Javascript_Arrays_Parameters_For Loop - Fatal编程技术网

Javascript 在函数的参数中设置数组

Javascript 在函数的参数中设置数组,javascript,arrays,parameters,for-loop,Javascript,Arrays,Parameters,For Loop,只是想通过我的参数设置一个数组。查看下面的伪代码,了解我正在尝试执行的操作: function someFunction(x = new Array()){ for (a in x){ some action with x[a]; } } someFunction([value a, value b, value c]); 所以我正在尝试做一些类似的事情。提前谢谢各位 试试这个: function someFunction() { for(var i = 0; i <

只是想通过我的参数设置一个数组。查看下面的伪代码,了解我正在尝试执行的操作:

function someFunction(x = new Array()){
 for (a in x){
  some action with x[a];
 }
}

someFunction([value a, value b, value c]);
所以我正在尝试做一些类似的事情。提前谢谢各位

试试这个:

function someFunction() {
    for(var i = 0; i < arguments.length; i+=1) {
       // some action with arguments[i]
    }
}

// usage
someFunction(a, b, c);
someFunction.apply(window, [a, b, c]);
function someFunction(){
对于(变量i=0;i
arguments
属性是在函数中自动定义的,每个函数作用域都有一个新属性。它几乎是一个数组,但不完全是。不过,在99%的情况下,您可以像使用数组一样使用它


第二个用法示例是,如果您有一个要传入的数组,但它不是静态定义的。函数对象上的apply方法将允许您传递上下文和参数数组。

如果我理解正确,您希望在没有参数传递给函数的情况下使用空数组。您可以使用以下代码来实现这一点

function someFunction(x){
    x = x || [];
    //...    
}

someFunction([value a, value b, value c]);

这基本上是每个
的特例:

function each(a, f) {
    a = a || [];
    for (var i=0; i < a.length; ++i) {
        f(a[i]);
    }
}

请注意,将(…in…)与数组一起使用会导致问题,因为除了整数索引之外,它还会拾取数组上定义的属性。

噢,哇,我非常接近,不是吗?所以x=x | |[];将参数(在本例中为x)声明为数组,然后?
x=x | |[]
表示如果
x
有值(未定义或为false或null),则将
x
的值赋给
x
。如果
x
没有值,则将其设置为空数组。这是处理可选参数的一种非常有用的方法。如果不过滤
hasOwnProperty
,您将获得数组的所有成员函数以及实际数组值。无论何时在循环中执行
for,都应该理所当然地筛选hasOwnProperty。实际上最好避免使用
for。。。在…
中,用于数组上的迭代。我只是想展示一下与params合作的技巧。编辑了片段。请注意,更改全局数组原型时存在陷阱。不要使用
新数组
;只需执行
[]
同样有效,而且更简单。
Array.prototype.each = function(f) {
    for (var i=0; i < this.length; ++i) {
        f(this[i], i);
    }
};

Array.prototype.map = function(f) {
    var result = [];
    for (var i=0; i < this.length; ++i) {
        result[i] = f(this[i], i);
    }
    return result;
};

Array.prototype.map = function(keep) {
    var result = [];
    for (var i=0; i < this.length; ++i) {
        if (keep(this[i], i)) {
            result.push(this[i]);
        }
    }
    return result;
};

Array.prototype.foldl = function(f) {
    var result = this[0];
    for (var i=1; i < this.length; ++i) {
        result = f(result, this[i]);
    }
    return result;
};

Array.prototype.foldr = function(f) {
    var i=this.length-1
    var result = this[i];
    for (--i; i >= 0; --i) {
        result = f(this[i], result);
    }
    return result;
};

Array.prototype.reduce = Array.prototype.foldl;