2017-04-25 66 views
1

所以,我有對象的數組:如何更換整數字符串的多維數組

var arr = [ 
    {name: 'John', cars: '2', railcard: 'yes', preferences: ['taxi', 'tram', 'walking']}, 
    {name: 'Mary', cars: '0', railcard: 'no', preferences: ['cyling', 'walking', 'taxi']}, 
    {name: 'Elon', cars: '100000', railcard: 'no', preferences: ['Falcon 9', 'self-driving', 'Hyper-loop']} 
]; 

我試圖使用地圖,過濾器,變換上述陣列,一個降低。即使我可以輕鬆地分離出特定的數據集,我仍然無法改變原始數組。

例如:

我試圖改變每個人擁有的是一個數字,而不是一個繩子,讓汽車的數量...

var cars = arr.map(function(arr) {return arr.cars}); 
var carsToNumber = cars.map(function(x) {return parseInt(x)}); 

我現在該如何更換數組中的原始字符串值?

預期結果:

var arr = [ 
    {name: 'John', cars: 2, railcard: 'yes', preferences: ['taxi', 'tram', 'walking']}, 
    {name: 'Mary', cars: 0, railcard: 'no', preferences: ['cyling', 'walking', 'taxi']}, 
    {name: 'Elon', cars: 100000, railcard: 'no', preferences: ['Falcon 9', 'self-driving', 'Hyper-loop']} 
]; 
+0

請添加想要的結果。 –

+0

更新爲預期結果 – user6456392

+0

代碼中有很多語法錯誤。數組沒有關閉,一些對象鍵是無效的... – Badacadabra

回答

2

你可以只使用forEach循環和變化串號。 map()方法創建一個新的數組。

var arr = [ 
 
    {name: 'John', cars: '2', railcard: 'yes', preferences: ['taxi', 'tram', 'walking']}, 
 
    {name: 'Mary', cars: '0', railcard: 'no', preferences: ['cyling', 'walking', 'taxi']}, 
 
    {name: 'Elon', cars: '100000', railcard: 'no', preferences: ['Falcon 9', 'self-driving', 'Hyper-loop']} 
 
]; 
 

 
arr.forEach(e => e.cars = +e.cars); 
 
console.log(arr)

0

做到這一點與map將返回一個新的副本的方式。如果您想修改原始數據,請使用簡單的循環。

map例如:

const updatedArr = arr.map(item => Object.assign({}, item, {cars: +item.cars})) 
+0

不正確...修改存在的同一對象引用在原始 – charlietfl

+0

@charlietfl oops你是對的,更新 – aw04