2017-09-23 45 views
0

所以我給了這個問題寫一個函數,將採取給定的數組,給它添加一個給定的數字,並輸出一個新的數組添加給定的數字到數組中的每個元素..所以given_array = [1,2,3,4,5] ... function add(5).... new_array(或者更改舊數組)= [6,7, 8,9,10]。使陣列成爲一個函數,給數組中的數字添加一個給定值

這裏有一個問題:

// write code so that console logs print out true 
// add(addValue) should return a new arrays where addValue 
// is added to each value of original array 
// i.e. [6, 7, 8, 9, 10] > 

var e = [1, 2, 3, 4, 5]; 
console.log(e.add(5) == '[6,7,8,9,10]'); 

這給了我我的結果,但這不是問題

var e = [1, 2, 3, 4, 5]; 
var addValue = (e, Val) => e.map(add=>add+Val); 

console.log(addValue(e,5)); 
+0

修改'Array.prototype'對象。 – Li357

+0

在這種情況下,我該怎麼做?你的意思是在我創建的答案中?當談到原型時,我是新手。 –

+0

'Array.prototype.add = function add(n){return this.map(v => v + n).join()}' –

回答

0

使用原型

Array.prototype.add = function(val) { 
    for(var i=0;i<this.length;i++){ 
     this[i] = this[i]+val; 
    } 
}; 
e.add(6); 
console.log(e); 
2

編寫接受整數的函數你將添加,並返回一個新的函數,當你執行加法計算它傳遞一個數組:

function add(n) { 
    return function (arr) { 
    return arr.map(function (el) { 
     return n + el; 
    }); 
    } 
} 

const add5 = add(5); 
add5([1, 2, 3, 4, 5]); // [6, 7, 8, 9, 10] 

DEMO

你甚至都不需要創建一個新的變量保存返回的功能:

add(5)([1, 2, 3, 4, 5]); 

在ES6一行代碼:

const add = (n) => (arr) => arr.map(el => n + el); 

DEMO

如果你真的想將它添加到Array.prototype(確保你檢查,你提出的新方法是不是已經在原型):

if (!(Array.prototype.add)) { 
    Array.prototype.add = function (n) { 
    return this.map(function (el) { 
     return n + el; 
    }); 
    } 
} 

[1, 2, 3, 4, 5].add(5); // [6, 7, 8, 9, 10] 

DEMO

1

執行此操作的最直接方法是使用中的number參數調用Array#map(),並使用範圍函數:

Array.prototype.add = function add (number) { 
 
    return JSON.stringify(this.map(value => value + number)) 
 
} 
 

 
var e = [1, 2, 3, 4, 5] 
 

 
console.log(e.add(5) == '[6,7,8,9,10]')

必須在JSON.stringify()包的原因是因爲Array#toString()Array#join()不包括包裝方括號中的JSON編碼。

相關問題