Sno*_*opy 0 javascript arrays reactjs
我有一个像这样的数组.
const array =["king", "henry", "died", "while", "drinking", "chocolate", "milk"]
Run Code Online (Sandbox Code Playgroud)
我有以下初始状态
state = {
options:{}
}
Run Code Online (Sandbox Code Playgroud)
如果我想将此数组映射到我的状态并将每个索引字符串分配为我将this.state.options
如何执行此操作的属性?
所以最终的结果是:
console.log(this.state.options)
Run Code Online (Sandbox Code Playgroud)
输出:{king:null,henry:null,death:null,while:null,drinking:null,chocolate:null,milk:null}
我认为在那之后它将是未定义的而不是null ...但是有什么建议吗?
我相信你是在寻找reduce
而不是map
const array =["king", "henry", "died", "while", "drinking", "chocolate", "milk"];
const state = {
options: array.reduce( (current, item) => {
current[item] = null;
return current;
}, {})
};
console.log( state );
Run Code Online (Sandbox Code Playgroud)
您可以使用该Object.fromEntries
功能:
const array = [ "king", "henry", "died", "while", "drinking", "chocolate", "milk" ];
state = {
options: Object.fromEntries(array.map(value => [ value, null ]))
};
Run Code Online (Sandbox Code Playgroud)
您的用户代理可能不提供Object.fromEntries
其脚本主机 - 该功能是 ECMAScript 2019 又名第 10 版的一部分 - 但您可以使用替代程序,直到它提供:
if(!Object.fromEntries)
Object.fromEntries = entries => entries.reduce((result, entry) => (result[entry[0]] = entry[1], result), {});
Run Code Online (Sandbox Code Playgroud)
我更喜欢使用我希望稍后广泛使用的部分语言或 API,通过提供替代实现,直到这些实现可用,此时代码将在不进行任何修改的情况下自动使用本机实现(上面显然是一个条件替代 a 或polyfill,因为它也被称为)。