从javascript对象获取字符串
我有一个javascript对象从javascript对象获取字符串,javascript,Javascript,我有一个javascript对象 { A: 1, B: 2, C: 2, D: 1, E: 1, F: 4, G: 6, H: 2 }, 我想根据哪个键的值最高来获取一个四个字母的字符串,但该字符串只能由以下16个组合按照它们在对象中出现的顺序生成: A or B C or D E or F G or H 所以有16种可能的组合。上面的示例将导致字符串“BCFG” 有人有什么想法吗?你可以 获取对象的条目 配对两个条目 映射光
{
A: 1,
B: 2,
C: 2,
D: 1,
E: 1,
F: 4,
G: 6,
H: 2
},
我想根据哪个键的值最高来获取一个四个字母的字符串,但该字符串只能由以下16个组合按照它们在对象中出现的顺序生成:
A or B
C or D
E or F
G or H
所以有16种可能的组合。上面的示例将导致字符串“BCFG”
有人有什么想法吗?你可以
- 获取对象的条目
- 配对两个条目
- 映射光栅值的字母
- 将数组连接到单个字符串
var object={A:1,B:2,C:2,D:1,E:1,F:4,G:6,H:2},
结果=对象
.条目(对象)
.减少((r,a,i)=>{
如果(i%2){
r[r.length-1]。推送(a);
}否则{
r、 推动([a]);
}
返回r;
}, [])
.map(([a,b])=>a[1]>b[1]?a[0]:b[0])
.加入(“”);
控制台日志(结果)代码>
var vs={A:1,B:2,C:2,D:1,E:1,F:4,G:6,H:2}
var字母=[];
var数=[];
var短语=”;
for(在vs中输入var){
字母。按(键);
推送(vs[键]);
}
对于(变量i=1;i数字[i]){
短语=短语+字母[i-1];
}否则{
短语=短语+字母[i];
}
}
我比较对象中的每一对,然后从较高的一对构造结果字符串
const obj={A:1,B:2,C:2,D:1,E:1,F:4,G:6,H:2}/“BCFG”
让getHighest=(obj)=>{
让结果=”;
//将对象转换为数组
obj=对象.键(obj).映射(函数(键){
返回[key,obj[key]];
});
//通过i+2迭代数组(在每个循环中跳过1)
对于(设i=0,len=obj.length;iobj[i+1][1]){
//将字母添加到结果中
结果+=obj[i][0];
}
//第二个大于或等于
否则{
//将字母添加到结果中
结果+=obj[i+1][0];
}
}
返回结果;
}
console.log(getHighest(obj))代码>将你的家庭作业发布为
var values = {
A: 1,
B: 2,
C: 2,
D: 1,
E: 1,
F: 4,
G: 6,
H: 2
};
var result = Object.keys(values).reduce(function(result, value, index, array) {
if (index % 2 === 0) {
result.push(array[values[value] > values[array[index + 1]] ? index : index + 1])
}
return result;
}, []).join('');