简体   繁体   English

打印数组 javascript 的 object 数组

[英]Print array of object of array javascript

I am so confused about some datas.我对一些数据感到很困惑。 I am working with vanilla js.我正在使用香草js。 I have an array like this.我有一个这样的数组。

rooms=[];
rooms.push({"room":"room1","users":[{"name":"arif"},{"name":"ozgur"}]});
rooms.push({"room":"room2","users":[{"name":"mehmet"},{"name":"hürol"}]});

I want to print users of room1.我想打印 room1 的用户。 I have tried我努力了

let activeroom = rooms.filter(room => room.room === "room1");
console.log(activeroom.users.toString()); 

But it didnt work.但它没有用。 How can I access to names?如何访问名称? Thank you.谢谢你。

Use find instead of filter使用查找代替过滤器

 rooms=[]; rooms.push({"room":"room1","users":[{"name":"arif"},{"name":"ozgur"}]}); rooms.push({"room":"room2","users":[{"name":"mehmet"},{"name":"hürol"}]}); let activeroom = rooms.find(room => room.room === "room1"); console.log(activeroom.users);

your filter is right, but activeroom is array not object and you can't call .toString() for object use JSON.stringify() instead.您的过滤器是正确的,但activeroom是数组而不是 object 并且您不能为 object 调用.toString()使用JSON.stringify()代替。

 rooms=[]; rooms.push({"room":"room1","users":[{"name":"arif"},{"name":"ozgur"}]}); rooms.push({"room":"room2","users":[{"name":"mehmet"},{"name":"hürol"}]}); let activeroom = rooms.filter(room => room.room === "room1"); console.log(JSON.stringify(activeroom)); console.log(JSON.stringify(activeroom[0].users)); // [0] select first index of object

You can do something like this:你可以这样做:

let activeRooms = [];

rooms.forEach(eachRoom => {
  if (eachRoom.room === 'room1) {
      activeRooms.push(eachRoom);
  }
});

console.log('Active rooms array ==>', activeRooms);

// if you want to use your way of doing, implement filter inside the foreclosure. It will work. 

Room.room is not a property .. room is an array. So you'll have to loop through every room obj

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM