【问题标题】:Converting array with Different data type转换具有不同数据类型的数组
【发布时间】:2019-07-24 02:08:37
【问题描述】:

如何在 Javascript 中将其转换为:

[
   {
      "label": "Purok I",
      "y": "1"
   },
   {
      "label": "Purok II",
      "y": "1"
   },
   {
      "label": "Purok III",
      "y": "2"
   }
]

到:

[
   {
      label: "Purok I",
      y: 1
   },
   {
      label: "Purok II",
      y: 1
   },
   {
      label: "Purok III",
      y: 2
   }
]

有什么帮助吗?

【问题讨论】:

  • 有什么区别?字符串化的属性名称不做任何事情。
  • 我想输出不同数据类型的值,但它返回所有字符串
  • 哦,我明白了 - 谢谢你的解释。
  • 没问题@JackBashford
  • @john 您转换 {"y":"2"} ==> {y:2} 的意图是什么?

标签: javascript arrays json object ecmascript-6


【解决方案1】:

使用map 将所有字符串化数字变成非字符串化数字并像这样解构:

const data = [
   {
      "label": "Purok I",
      "y": "1"
   },
   {
      "label": "Purok II",
      "y": "1"
   },
   {
      "label": "Purok III",
      "y": "2"
   }
];

const numbered = data.map(({ label, y }) => { return {label, y: parseInt(y)}});

console.log(numbered);
.as-console-wrapper { max-height: 100% !important; top: auto; }

编辑

事实证明,创建无字符串属性名称是不可能的:

var obj = {
  foo: "bar",
  one: 1
};

console.log(obj);

【讨论】:

  • 可靠的答案,没有解决他想要 {y: 1} 而不是 {"y":1} 的事实。
  • 很好的答案,但这不是我想要的
  • 所有键和值都是字符串。我想要不同的数据类型,你能帮我吗?
  • @JohnCrisMañabo 这是不可能的 - 请参阅上面的示例。
  • 没问题@JohnCrisMañabo 总是乐于提供帮助。
【解决方案2】:

此方法将自动更新对象中的所有数字类型。

let arr = [{
    "label": "Purok I",
    "y": "1"
  },
  {
    "label": "Purok II",
    "y": "1"
  },
  {
    "label": "Purok III",
    "y": "2",
    "example": "432.23"
  }
];

// Map over your array of objects
arr = arr.map(obj => {
  // Map over all the keys in your object
  Object.keys(obj).map(key => {
    // Check if the key is numeric
    if (!isNaN(obj[key])) {
      obj[key] = +obj[key];
    }
  })
  return obj;
});
console.log(arr);

【讨论】:

  • 有什么区别?都是字符串
  • 你想投吗?
【解决方案3】:

let  p = [
   {
      "label": "Purok I",
      "y": "1"
   },
   {
      "label": "Purok II",
      "y": "1"
   },
   {
      "label": "Purok III",
      "y": "2"
   }
]

let result = p.map(function(x) { 
    x.y = Number(x.y);  
    return x;
});

console.log(result);

【讨论】:

  • 你解决了我的问题。非常感谢 。非常感谢
猜你喜欢
  • 1970-01-01
  • 2021-05-02
  • 2015-11-30
  • 2020-05-08
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
相关资源
最近更新 更多