如何从具有属性和TypeScript中的数组的对象中提取数组?

时间:2019-10-20 23:30:01

标签: javascript typescript

我有一个对象,该对象始终具有一个属性和一个数组。当我用console.log(obj)打印出来时。它喜欢以下内容。

 ProjectName: MyTest1
 [0] { foo: 1, bar: 2}
 [1] { foo: 3, bar: 4}
 [2] { foo: 5, bar: 6} 

ProjectName: MyTest2
[0] { foo: 1, bar: 2}
[1] { foo: 3, bar: 4}
[2] { foo: 5, bar: 6} 
[3] { foo: 6, bar: 7}

更新

有数百个来自后端,因此数组的大小不是固定的。但是对象始终是单个属性加一个数组。 该对象是json对象和数组的组合。我想要一个代码来提取它。 现在,我想从对象中提取数组并将其分配给数组变量,这样我就可以遍历它。这意味着我必须摆脱第一个属性。

UPDATE1

我希望通过代码而不是硬代码从原始对象中提取新对象,因为我们有许多动态大小数组。

 [0] { foo: 1, bar: 2}
 [1] { foo: 3, bar: 4}
 [2] { foo: 5, bar: 6}

2 个答案:

答案 0 :(得分:0)

尝试一下?

let superArray: [] = [];

const obj = {
     a: [{ foo: 1, bar: 2}],
     b: [{ foo: 3, bar: 4}],
     c: [{ foo: 5, bar: 6}] 
};

for (var array in obj) {
    superArray = superArray.concat(obj[array]);
}

console.log(superArray);

答案 1 :(得分:0)

请参阅我对“已问到”的评论

简称:

let blaster = loader.load("/Assets/Fonts/Racing Sans One_Regular.json", 
function(font) {
  var geometry = new THREE.TextGeometry("BLASTER!", {
  font: font,
  size: 1.2,
  height: 0.5,
  curveSegments: 12
});
var material = new THREE.MeshBasicMaterial();
text = new THREE.Mesh(geometry, material);
scene.add(text);
});

输出:

console output

建议

避免混合属性和数组索引,请使用补充属性来存储数组。

var mm=[ 
  { foo: 1, bar: 2} , { foo: 3, bar: 4} ,  { foo: 5, bar: 6} , { foo: 6, bar: 7}
 ];
 mm.property="Hello world";
 console.log("\n1) IsArray ?------------");
 console.log( mm instanceof Array ? "Array":"Other...");
 console.log("2) see mm");
 console.log(mm);


 console.log("\nA------- all properties ---------");
 for (var i in mm) {
  if(mm.hasOwnProperty(i)) {
  console.log("property "+i+"=",mm[i]);
  }
 }


 console.log("\nB------ Array indexes ----------");
 for (var i=0; i<mm.length;i++) {
   console.log("property "+i+"=",mm[i]);
 }

 var mm2=JSON.parse(JSON.stringify(mm));
 mm2[9]="index 10???";
 console.log("\nC------ Array indexes ----------");
 for (var i=0; i<mm2.length;i++) {
   console.log("property "+i+"=",mm2[i]);
 }