如何将带有键的数组对象转换为数组(无键)

时间:2019-01-27 01:52:33

标签: javascript arrays typescript angular6

我有这样的数组:

0: {sabha_id: "Scarborough", sabha_type: 6, followup_id: 44} 1: {sabha_id: "Mississauga", sabha_type: 8, followup_id: 44}

我需要这样的东西:

 [ {sabha_id: "Scarborough", sabha_type: 6, followup_id: 44}, {sabha_id: "Scarborough", sabha_type: 6, followup_id: 44}]

2 个答案:

答案 0 :(得分:0)

您可以使用

Object.values(obj)

将对象转换为数组。

在您的情况下:

let data = {
  0: {sabha_id: "Scarborough", sabha_type: 6, followup_id: 44}
  1: {sabha_id: "Mississauga", sabha_type: 8, followup_id: 44}
};

let array = Object.values(data);

从Object.values()返回的属性的顺序

由于有一些关于Object.values()返回的属性的迭代顺序的争论,我将予以澄清。

自ES6开始,属性返回的顺序按照规范进行排序

For..in使用[[enumerate]],依次使用Reflect.ownKeys,然后使用[[OwnPropertyKeys]]定义为:

  

9.1.12 [[OwnPropertyKeys]]()

     

当O的[[OwnPropertyKeys]]内部方法称为   采取以下步骤:

     
      
  1. 让键成为一个新的空列表。
  2.   
  3. 对于O的每个自己的属性键P(它是整数索引),以数字索引的升序排列   一种。将P添加为键的最后一个元素。
  4.   
  5. 对于每个自己的O的属性键P(按字符串创建,但不是整数索引),按属性创建顺序   一种。将P添加为键的最后一个元素。
  6.   
  7. 对于每个属于符号的O自己的属性键P,按属性创建顺序   一种。将P添加为键的最后一个元素。
  8.   
  9. 返回键。
  10.   

答案 1 :(得分:0)

要确保保留正确的顺序,请给其length表示该对象自身的属性数,将其转换为类似数组的对象。

然后您可以使用Array.from进行转换。

var data = {
  0: {sabha_id: "Scarborough", sabha_type: 6, followup_id: 44},
  1: {sabha_id: "Mississauga", sabha_type: 8, followup_id: 44}
};

data.length = Object.getOwnPropertyNames(data).length;

var array = Array.from(data);

console.log(array);