Javascript 使用map函数创建对象,currentValue作为对象键

Javascript 使用map函数创建对象,currentValue作为对象键,javascript,reactjs,Javascript,Reactjs,在我的ReactApp中,我保留用户的状态列表(从后端API获取)。它被称为“当前用户” 我希望填充buttonList以获得对象数组,其中数组将如下所示(示例): 这是我的主要职能 produceButtonValues = (currentUsersList) => { let inputList = currentUsersList .map( (nickname) => { return

在我的ReactApp中,我保留用户的状态列表(从后端API获取)。它被称为“当前用户”

我希望填充buttonList以获得对象数组,其中数组将如下所示(示例):

这是我的主要职能

    produceButtonValues = (currentUsersList) => {
        let inputList = currentUsersList
            .map( (nickname) => {
                    return {
                        nickname: {
                            "inviteButtonValue": "Invite",
                            "chatButtonValue": "Chat"
                        }
                    };
                }
            );
        this.setState({buttonList: inputList});
    }
我尝试使用map,但看起来我无法获取数组元素作为对象键,例如“TestUser1”等,而是获得了“昵称”(见Firefox DevTools加载项中的“组件”选项卡)

我按如下方式触发我的函数:

    componentDidMount() {
        this.produceButtonValues(this.state.currentUsers);
如何解决?
顺便说一下:当我运行
console.log(this.state.buttonList)时
setState
之后,我仍然看到空数组,因为它是在初始状态下生成的。为什么?

您正在寻找:

produceButtonValues = (currentUsersList) => {
        let inputList = currentUsersList
            .map( (nickname) => {
                    return {
                        [nickname]: {
                            "inviteButtonValue": "Invite",
                            "chatButtonValue": "Chat"
                        }
                    };
                }
            );
        this.setState({buttonList: inputList});
    }

要将变量用作对象键的值,您需要使用
[]

将其包装起来,以查找以下内容:

produceButtonValues = (currentUsersList) => {
        let inputList = currentUsersList
            .map( (nickname) => {
                    return {
                        [nickname]: {
                            "inviteButtonValue": "Invite",
                            "chatButtonValue": "Chat"
                        }
                    };
                }
            );
        this.setState({buttonList: inputList});
    }

要使用变量作为对象键的值,您需要使用
[]

将其包装,您可以使用字符串作为键,而不是变量名键。 在这种情况下,您可以使用模板字符串来强制执行用于生成字符串的键

例如:

produceButtonValues=(currentUsersList)=>{
让inputList=currentUsersList.map(昵称=>{
返回{
`${昵称}`:{
“邀请按钮值”:“邀请”,
“聊天按钮值”:“聊天”
}
};
});
this.setState({buttonList:inputList});
}

您可以使用字符串作为键,而不是变量名键。 在这种情况下,您可以使用模板字符串来强制执行用于生成字符串的键

例如:

produceButtonValues=(currentUsersList)=>{
让inputList=currentUsersList.map(昵称=>{
返回{
`${昵称}`:{
“邀请按钮值”:“邀请”,
“聊天按钮值”:“聊天”
}
};
});
this.setState({buttonList:inputList});
}

它被称为
属性访问器

您可以这样使用它:

currentUsersList.map(昵称=>({
[昵称]:{
inviteButton值:Invite,
聊天按钮值:聊天
}
});


它被称为
属性访问器

您可以这样使用它:

currentUsersList.map(昵称=>({
[昵称]:{
inviteButton值:Invite,
聊天按钮值:聊天
}
});

    componentDidMount() {
        this.produceButtonValues(this.state.currentUsers);
produceButtonValues = (currentUsersList) => {
        let inputList = currentUsersList
            .map( (nickname) => {
                    return {
                        [nickname]: {
                            "inviteButtonValue": "Invite",
                            "chatButtonValue": "Chat"
                        }
                    };
                }
            );
        this.setState({buttonList: inputList});
    }