如何从对象数组渲染所有对象属性

时间:2019-03-06 13:57:47

标签: javascript reactjs

我有一个名为courses[]的数组,该数组中有多个对象。每个对象代表一门课程。

我正在尝试渲染每门课程的所有对象属性。用我目前的方式,我可以console.log我所有的对象属性,但是我不确定如何将其呈现给DOM。我尝试了以下操作,但未显示任何内容:

<div className="courses">
    {
      courses.map(course =>
        Object.keys(course).forEach((val, key) => {
          return <div key={key}>{val}</div>;
        })
      )
    }
</div>

我在这里想念什么?

1 个答案:

答案 0 :(得分:4)

map不返回任何内容。而是使用Object.keys(course).map(...) ,它应该可以工作。

例如

    const Discord = require("discord.js");
const ms = require("ms");

module.exports.run = async (bot, message, args) => {

  //!tempmute @user 1s/m/h/d

  let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
  if(!tomute) return message.reply("Couldn't find user.");
  if(tomute.hasPermission("MANAGE_MESSAGES")) return message.reply("Can't mute them!");
  let muterole = message.guild.roles.find(`name`, "muted");
  //start of create role
  if(!muterole){
    try{
      muterole = await message.guild.createRole({
        name: "muted",
        color: "#000000",
        permissions:[]
      })
      message.guild.channels.forEach(async (channel, id) => {
        await channel.overwritePermissions(muterole, {
          SEND_MESSAGES: false,
          ADD_REACTIONS: false
        });
      });
    }catch(e){
      console.log(e.stack);
    }
  }
  //end of create role
  let mutetime = args[1];
  if(!mutetime) return message.reply("You didn't specify a time!");

  await(tomute.addRole(muterole.id));
  message.reply(`<@${tomute.id}> has been muted for ${ms(ms(mutetime))}`);

  setTimeout(function(){
    tomute.removeRole(muterole.id);
    message.channel.send(`<@${tomute.id}> has been unmuted!`);
  }, ms(mutetime));


//end of module
}

module.exports.help = {
  name: "tempmute"
}