【问题标题】:How to split single object into different array in javascript? [duplicate]如何在javascript中将单个对象拆分为不同的数组? [复制]
【发布时间】:2019-09-23 10:14:10
【问题描述】:

我有一个对象,例如:

{
A: false
B: false
C: false
D: false
E: false
F: false
}

我希望它在列表中的键/值对中分隔为:

[
    {
    A:false
    },{
    B: false
    },
    {
    C: false
    },{
    D: false
    }
]

是否可以像这样将对象更改为不同的列表?

【问题讨论】:

  • 使用 Object.entries 和 Array#map

标签: javascript


【解决方案1】:

您可以映射条目并获取单个条目并创建一个对象。

var data = { A: false, B: false, C: false, D: false, E: false, F: false },
    result = Object.entries(data).map(a => Object.fromEntries([a]));

console.log(result);
【解决方案2】:

您可以使用Object.entries 获取Array<[key, value]> 形式的数组,然后您可以将其映射到您想要的输出。

var object = { A: false, B: false, C: false, D: false, E: false, F: false };

var result = Object.entries(object).map(([i, v]) => ({ [i]: v }));

console.log(result);

或者,如果您想要一个兼容 IE 的方法,您可以改用 Object.keys

var object = { A: false, B: false, C: false, D: false, E: false, F: false };

var result = Object.keys(object).map(function(key) {
  var result = {};
  return result[key] = object[key], result;
});

console.log(result);

【讨论】:

  • 我的 Angular 7 不支持
  • @AshwinKarki 不支持哪个部分?
  • @AshwinKarki 我添加了另一个每个浏览器和框架都应该支持的示例。
  • “ObjectConstructor”类型上不存在属性“条目”
【解决方案3】:

有更短的方法,但这种方法使过程非常清晰:

const origObject = 
{
  A: false, // Each property of an object is a "key/value pair" ('key' aka 'name'.)
  B: false,
  C: false,
  D: false,
  E: false,
  F: false
};
const newArray = []; // Defines a new Array to store our new objects in
const origObjectKeys = Object.keys(origObject); // Gets keys from `origObject` (A,B,etc)


// Loops through all the keys , visiting each key once (in no particular order)
for(let thisKey of origObjectKeys){ 
  let thisValue = origObject[thisKey]; // Gets the value stored at a particular key
  let newObject = {}; // Defines a new empty object

  // Adds a property to the object, naming it the same as the current key (egs: A, B)
  //   and stores a value in that property (same as the current value, eg: false)
  newObject[thisKey] = thisValue;

  // Adds the new object to the Array
  newArray.push(newObject);
}
// When the loop stops running, one new object has been added to the array for each key

console.log(newArray);

【讨论】:

    【解决方案4】:

    你可以这样做:

    let originalObject = {
        A: false,
        B: false,
        C: false,
        D: false,
        E: false,
        F: false
    };
    
    let newObjectArray = [];
    Object.keys(originalObject).forEach((key) => {
       let newObject = {}
       newObject[key] = originalObject[key];
       newObjectArray.push(newObject);
    })
    console.log(newObjectArray);

    【讨论】:

      猜你喜欢
      • 2021-09-14
      • 2015-10-16
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      相关资源
      最近更新 更多