Javascript 在 map() 函数中使用函数 Number() 将字符串转换为数字



我想转换对象监视列表数组中给出的imdb评级。我正在使用地图功能尝试它,但没有发生。新列表只提供旧列表,没有任何更改。我做错了什么?

var watchList = [
{  
"Metascore": "74",
"imdbRating": "8.8",
"imdbVotes": "1,446,708",
"imdbID": "tt1375666",
"Type": "movie",
"Response": "True"
},
{  
"Metascore": "74",
"imdbRating": "8.6",
"imdbVotes": "910,366",
"imdbID": "tt0816692",
"Type": "movie",
"Response": "True"
},
{
"Metascore": "82",
"imdbRating": "9.0",
"imdbVotes": "1,652,832",
"imdbID": "tt0468569",
"Type": "movie",
"Response": "True"
}
];

let newList=[];
newList=watchList.map(function(list){
Number(list.imdbRating);
return list;
});
console.log(newList);

仅声明Number不会改变原始值。如果希望对象的属性imdbRating为数字,则必须为其分配

var watchList=[{"Metascore":"74","imdbRating":"8.8","imdbVotes":"1,446,708","imdbID":"tt1375666","Type":"movie","Response":"True"},{"Metascore":"74","imdbRating":"8.6","imdbVotes":"910,366","imdbID":"tt0816692","Type":"movie","Response":"True"},{"Metascore":"82","imdbRating":"9.0","imdbVotes":"1,652,832","imdbID":"tt0468569","Type":"movie","Response":"True"}];
watchList.forEach(function(list){
list.imdbRating = Number(list.imdbRating);
});
console.log(watchList);

请注意,对象在 Javascript 中是通过引用传递的 - 更改对对象的引用中的某些内容将更改原始对象,这就是为什么我使用forEach而不是.map。如果要创建全新的对象(而不是更改原始对象(,请使用对象展开以及map

var watchList=[{"Metascore":"74","imdbRating":"8.8","imdbVotes":"1,446,708","imdbID":"tt1375666","Type":"movie","Response":"True"},{"Metascore":"74","imdbRating":"8.6","imdbVotes":"910,366","imdbID":"tt0816692","Type":"movie","Response":"True"},{"Metascore":"82","imdbRating":"9.0","imdbVotes":"1,652,832","imdbID":"tt0468569","Type":"movie","Response":"True"}];
const newList = watchList.map(({ imdbRating, ...rest }) => ({
imdbRating: Number(imdbRating),
...rest,
}));
console.log(newList);

如果要从字符串快速转换为整数,可以使用+运算符。

例:

var newList=[];
newList=watchList.map(function(list){
list.imdbRating = +list.imdbRating;  
return list;
});

相关内容

最新更新