Javascript 如何从对象中查找选定对象

Javascript 如何从对象中查找选定对象,javascript,Javascript,我有seasons对象和SelectedSeasonID,它保存数据,无论是否选择selected键 我正在重构数组到对象的数据结构,以获得更好的性能 当我有这些数据时,我只想渲染选定的季节 seasons = {30: 'Fall', 31: 'Spring', 32: 'All'} selectedSeasonIds = {30: true, 31: false, 32: true} let output = selectedSeasonIds.???? // {30: 'Fall',

我有seasons对象和SelectedSeasonID,它保存数据,无论是否选择selected键

我正在重构数组到对象的数据结构,以获得更好的性能

当我有这些数据时,我只想渲染选定的季节

seasons  = {30: 'Fall', 31: 'Spring', 32: 'All'}

selectedSeasonIds = {30: true, 31: false, 32: true}

let output = selectedSeasonIds.????
// {30: 'Fall', 32: 'All'} <- This is my goal
我正在从选择器获取选定对象

selectedSeasons = SelectedSeasonsSelector(this.state) << getting selector
if(selectedSeasons.length==0) {
    return '-'
}
let seasonList = selectedSeasons.map((season) => {
    return ' '+season.value;
})
return seasonList

谢谢

对象中的键是可访问的属性,可以按如下方式获取:

selectedSeasonIds = {30: true, 31: false, 32: true}
Object.keys(selectedSeasonIds); //Gets an array of keys
for (let key in selectedSeasonIds){//Iterate through the keys};
之后,访问所选季节应该很简单。

您可以使用arrayreduce并设置一个条件,仅在输出中添加那些在SelectedSeasonID中为true的值

常量季节={30:'秋季',31:'春季',32:'所有'}; const-selectedseasureids={30:true,31:false,32:true}; 让output=Object.keyselectedseasuredids.reducer,k=>{ 如果选择了季节ID[k] r[k]=季节[k]|; 返回r; }, {};
console.logoutput;为什么对象查找比数组查找性能更好?因为对象查找比数组查找快得多。我有一个缓慢触摸不透明的问题。希望重构后它能解决这个问题:我很确定它不会更快,但在JS中一切都是可能的。链接文章中接受的答案是从简短的版本开始的:数组通常比对象快。。。。Afaik唯一的例外是稀疏数组,无论如何都应该避免。也许你最好问一下你的数组搜索有什么问题/如何改进你的缓慢的数组搜索..?你的数组搜索肯定有问题。举个例子,我每天使用一个旧的hta,它从内部网服务器读取一个500 kB的JSON文件,检查它是否具有与现有变量完全相同的数据,从数据创建一个2D数组~3000x15,从列中搜索一个字符串,存储所有匹配的字符串,最后创建一个唯一的图形编号。所有这些都在60到70毫秒之内,还有IE,这不是西方最快的浏览器。谢谢你的输入,但是很难把它当作一个完整的答案。你能解释一下R是什么吗?R是存储对象的累加器对象。k是SelectedSeasonID中的键。
selectedSeasonIds = {30: true, 31: false, 32: true}
Object.keys(selectedSeasonIds); //Gets an array of keys
for (let key in selectedSeasonIds){//Iterate through the keys};