【问题标题】:Javascript: object key-value pairsJavascript:对象键值对
【发布时间】:2021-07-01 20:01:40
【问题描述】:

我正在尝试获得如下输出:-

[{"option_id":1,"name":"small"},{"option_id":1,"name":"medium"}]

下面是我的 sn-p,你可以看到 console.log 只显示单个对象而不是两个。这是为什么? :/

const myObject = {
  "'\1\'": "small",
  "'\1\'": "medium"
};

var item = [];

Object.entries(myObject).forEach(([k, v]) => {
  item.push({
    name: v,
    option_id: k
  });

  console.log(item);
})

【问题讨论】:

  • 因为你的对象有重复的键,第一对会被覆盖
  • 但是我的 json 输出看起来如何,有什么方法可以解决它@RameshReddy?
  • 如果您的 JSON 看起来像那样(带有重复键),那么您应该将其作为字符串处理并自己解析每个元素。一旦你有了一个对象,重复的键就会被删除。

标签: javascript arrays object key-value


【解决方案1】:

您使用的方法只是覆盖了您创建的重复键...为防止这种情况,请勿使用对象键!你可以依靠数组传递你想要的数据

查看示例 =>

const myObject = {
  // number : [name , option]
  0: ["small", 1],
  1: ["medium", 1]
};

let item = [];

Object.entries(myObject).forEach(obj => {
  item.push({
    name: obj[1][0],
    option_id: obj[1][1]
  });
})

console.log(item);

使用数组方法的最佳方式

let  myObject = [
  ["small", 1],
  ["medium", 1]
];

myObject = myObject.map(obj => {
  return {
    name: obj[0], option_id: obj[1]};
});

console.log(myObject);

【讨论】:

  • @cdogol 试试这个,我认为它肯定会帮助你!
  • 嘿@Sanmeet 感谢您的帮助!我从你的回答中得到了这个想法;)
【解决方案2】:

一种选择是创建一个 JSON 格式的字符串,然后使用 JSON 库处理该字符串。

const myObject = {
  1: "small",
  1: "medium"
};

var item = [];

Object.entries(myObject).forEach(([k, v]) => {
  item.push('{"name":"' + v + '", "option_id":"' + k + '"}');
})
console.log(JSON.stringify(JSON.parse('[' + item.join(",") + ']')));

【讨论】:

  • 嗨@HeathSmith,我在小提琴上试过你的代码,但它说脚本错误。
  • 出现错误,请尝试解决并修改您的答案!
猜你喜欢
  • 1970-01-01
  • 2023-01-09
  • 1970-01-01
  • 2022-08-18
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
相关资源
最近更新 更多