【问题标题】:Convert an object to Array without putting key and value of Object.entries into a string In JavaScript [duplicate]将对象转换为数组而不将 Object.entries 的键和值放入 JavaScript 中的字符串 [重复]
【发布时间】:2021-05-11 03:35:45
【问题描述】:

我想像这样转换一个对象:

let obj = {
arabicLang: false,
cancelVisitEmailAlert: false,
canselVisitSmsAlert: false
}

到这样的键值对数组中:

[
"arabicLang": false,
"cancelVisitEmailAlert": false,
"canselVisitSmsAlert": false
]

我阅读了 StackOverflow 中的所有问题,但没有一个是我的情况

我试试这个,但它返回字符串中的键和值:

    let data = [];
     for (const [key, value] of Object.entries(obj)) {
       data.push(createData(key, value));
     }

function createData(key, value) {
    return key + ":" + value;
  }

也可以试试这个:

    let arr = Array.of(obj)
      console.log(arr) 
      /* output is 
      [{
    arabicLang: false,
    cancelVisitEmailAlert: false,
    canselVisitSmsAlert: false
    }]

*/

它保存对象容器

【问题讨论】:

  • arabicLang: false 作为一个元素不起作用(这是一个语法错误),你希望它成为一个对象吗:{arabicLang: false}
  • 我认为你不能像这样创建一个Array,如果你想创建一个objectsArray 使用Object.entries(obj),这将导致[{a: 1}, {b:2}]
  • Javascript 中的所有对象键都是字符串,在编写对象字面量时,不需要引号。
  • 您可以使用 Object.entries() 并将结果平展,但结果将以逗号分隔,而不是 semicolon comma semicolon comma
  • 由于[arabicLang: false] 是无效语法,我们无法真正知道您期望它做什么。为什么你想要一个数组而不是一个对象?您打算如何使用该值?也许这有助于了解您想要实现的目标。

标签: javascript arrays object


【解决方案1】:

您可以使用.reduce.map 喜欢:

let obj = {
    arabicLang: false,
    cancelVisitEmailAlert: false,
    canselVisitSmsAlert: false
};

// Using .reduce
const result = Object.entries(obj).reduce((acc, [key, value]) => {
  acc[key] ??= {[key]: value};
  return acc;
}, {});
console.log(Object.values(result));

// Using .map
const result2 = Object.entries(obj).map(([key, value]) => ({[key]: value}));
console.log(result2);

【讨论】:

    【解决方案2】:

    唯一的东西,而不是createData 方法,只是使用对象字面量来简化。

    let obj = {
      arabicLang: false,
      cancelVisitEmailAlert: false,
      canselVisitSmsAlert: false,
    };
    
    let data = [];
    for (const [key, value] of Object.entries(obj)) {
      data.push({ [key]: value });
    }
    
    console.log(data);

    【讨论】:

    • 只要Object.entries 就会产生想要的结果。
    • Object.entries 会产生类似 [[key1, val1], [key2, val2]] 对吗?如果我们需要它,就像对象数组一样。
    • 可能,但是 OP 的符号是无效的,并且让人困惑。对我而言,“键值对数组”Object.entries 返回的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2021-09-28
    相关资源
    最近更新 更多