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);