如何更换整数字符串的多维数组

问题描述:

所以,我有对象的数组:如何更换整数字符串的多维数组

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

你可以只使用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)

做到这一点与map将返回一个新的副本的方式。如果您想修改原始数据,请使用简单的循环。

map例如:

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

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

+0

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