Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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 - Fatal编程技术网

Javascript 创建新的数组方法

Javascript 创建新的数组方法,javascript,Javascript,我想要实现的是: [1,2,3].power(2) === [1,4,9]; 到目前为止,我做到了: Array.prototype.power = function(value) { for (var i = 1; i < this.length; i++) { this[i] = Math.pow(this[i], value); } } 我做错了什么?您需要返回阵列: Array.prototype.power = function(value)

我想要实现的是:

[1,2,3].power(2) === [1,4,9];
到目前为止,我做到了:

Array.prototype.power = function(value) {
    for (var i = 1; i < this.length; i++) {
        this[i] = Math.pow(this[i], value);
    }
}

我做错了什么?

您需要返回阵列:

Array.prototype.power = function(value) {
    for (var i = 0; i < this.length; i++) {
        this[i] = Math.pow(this[i], value);
    }
    return this;
}

var powers = [1,2,3].power(2); // [1, 4, 9]
powers.length; // 3

powers.toString() // 1,4,9
如果我用索引号迭代它,我可以得到一个准确的读数:

for(var i = 0; i < powers.length; i++){

  console.log(powers[i]);

}

// 1
// 4
// 9
for(var i=0;i

非常简单:
[1,4,9]
绝对是使用上述
power
方法时返回的数组元素。

如前所述,您不能直接比较数组。但是,您可以编写一个简单的方法来查看是否有匹配的值:

var arr = [1, 2, 3];
var arr2 = [1, 4, 9];

Array.prototype.power = function(value) {
    for (var i = 0; i < this.length; i++) {
        this[i] = Math.pow(this[i], value);
    }
    return this;
}

Array.prototype.compare = function(value) {   
    if (this.length !== value.length) {
         return false   
    }

    for (var i = 0; i < this.length; i++) {
        if (this[i] !== value[i]) {
         return false;   
        }
    }

    return true;
}

var convertedArray = [1, 2, 3].power(2);
var isEqual = convertedArray.compare(arr2);
var-arr=[1,2,3];
var arr2=[1,4,9];
Array.prototype.power=函数(值){
for(var i=0;i
注意:这假设数组的长度相同。您可以为它们添加自己的错误处理


从i=0开始,而不是从i=1开始您的方法将不会返回
false
,它将返回
未定义的
,这是正确的,因为您的方法中没有
返回
。1只是一个尝试,如果我将其更改为0,并且i
返回此
,则始终为false…是否要在适当位置更新数组,或者返回结果(或者两者都返回)?不能以试图比较数组的方式比较数组。严格运算符不比较数组。
[1,4,9]=[1,4,9]
的结果也是
false
。依我看,这是阵列原型设计的典型问题。这样做没关系,但你需要相信,作为一个数组,它的长度只有
3
,如果你正确地迭代它,你只能得到预期的值。你能举个例子吗?只有3个小时我在和它战斗。。。谢谢
var arr = [1, 2, 3];
var arr2 = [1, 4, 9];

Array.prototype.power = function(value) {
    for (var i = 0; i < this.length; i++) {
        this[i] = Math.pow(this[i], value);
    }
    return this;
}

Array.prototype.compare = function(value) {   
    if (this.length !== value.length) {
         return false   
    }

    for (var i = 0; i < this.length; i++) {
        if (this[i] !== value[i]) {
         return false;   
        }
    }

    return true;
}

var convertedArray = [1, 2, 3].power(2);
var isEqual = convertedArray.compare(arr2);