【问题标题】:how to transfer string to number in javascript from nested array [duplicate]如何将嵌套数组中的字符串传输到javascript中的数字[重复]
【发布时间】:2023-01-04 15:14:39
【问题描述】:
const detail = [{"User": {"id": 1, "name":"jack", "address":[{"zip":"333"}]}}];

我想使用通过地图使用的 javascript 将 zip 字符串更改为数字它不起作用请指导

detail.map((item) => {
 return item.address.map(e => Number(e.zip)
})

【问题讨论】:

  • 你能分享一下不起作用的代码吗?

标签: javascript


【解决方案1】:

如果你有一个嵌套数组并且你想将所有的字符串转换为数字,你可以结合使用 map 和 Number 或 parseInt。例如:

const arr = [['1', '2', '3'], ['4', '5', '6']];
const numArr = arr.map(subArr => subArr.map(Number));
// numArr will be equal to [[1, 2, 3], [4, 5, 6]]

或者,您可以使用循环将字符串一个一个地转换为数字。例如:

const arr = [['1', '2', '3'], ['4', '5', '6']];
const numArr = [];

for (let i = 0; i < arr.length; i++) {
  const subArr = arr[i];
  const numSubArr = [];
  for (let j = 0; j < subArr.length; j++) {
    numSubArr.push(Number(subArr[j]));
  }
  numArr.push(numSubArr);
}

// numArr will be equal to [[1, 2, 3], [4, 5, 6]]

【讨论】:

    【解决方案2】:

    试试这个,

        const updatedDetail = detail.map(item => {
          const { User: { zip } } = item;     
          item.User.zip = Number(zip);
          return item;
        });
    

    【讨论】:

      【解决方案3】:

      当映射到detail 时,您映射到最外面的对象。您需要重新创建每个对象(及其内部对象),以便您最终可以更新内部 address 对象:

      const detail = [{"User": {"id": 1, "name":"jack", "address": [{"zip":"333"}]}}];
      
      const res = detail.map(obj => ({
        ...obj,
        User: {
          ...obj.User,
          address: obj.User.address.map(address => ({...address, zip: +address.zip}))
        }
      }));
      console.log(res);

      通过使用扩展语法 (...),我们可以创建新对象,并避免更新原始 detail 数组中的对象。

      【讨论】:

        猜你喜欢
        • 2018-06-25
        • 1970-01-01
        • 1970-01-01
        • 2021-04-07
        • 2023-03-08
        • 2013-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多