如何按指定Key将JavaScript对象数组中的字符串值转换为整数
解决方案:将指定Key的字符串值转为整数
下面提供几种实用的处理方式,根据你的需求选择:
1. 直接修改原数组
如果不需要保留原数组的原始数据,可以用forEach遍历数组,直接修改对应key的值:
let arr = [ { 'pippo': '1', 'descrizione': 'ciao' } ]; arr.forEach(item => { // 把字符串转为整数,用parseInt或者Number都可以 item.pippo = parseInt(item.pippo, 10); // 或者 item.pippo = Number(item.pippo); }); console.log(arr); // 输出:[{ pippo: 1, descrizione: 'ciao' }]
2. 创建新数组(不修改原数据)
如果需要保留原数组,用map方法生成新数组,配合对象展开运算符复制其他属性:
let arr = [ { 'pippo': '1', 'descrizione': 'ciao' } ]; const newArr = arr.map(item => ({ ...item, pippo: parseInt(item.pippo, 10) })); console.log(newArr); // 输出:[{ pippo: 1, descrizione: 'ciao' }] console.log(arr); // 原数组保持不变
3. 处理多对象/key不存在的情况
如果数组里有多个对象,或者不确定目标key是否存在,可以加个判断避免报错:
let arr = [ { 'pippo': '1', 'descrizione': 'ciao' }, { 'descrizione': 'hello' }, // 没有pippo字段 { 'pippo': '2', 'descrizione': 'world' } ]; const newArr = arr.map(item => { if (item.hasOwnProperty('pippo')) { return { ...item, pippo: parseInt(item.pippo, 10) }; } return item; // 没有目标key的对象直接返回 }); console.log(newArr);
补充说明
parseInt(str, 10)指定基数10是为了避免八进制解析的坑(比如parseInt('010')在旧环境会返回8)。- 如果字符串是纯数字,
Number(str)和+str也能实现转换,效果类似。
内容的提问来源于stack exchange,提问作者max devis
相关产品推荐
相关产品推荐

