Javascript 编写js程序创建map_armstrong函数
创建一个具有两个参数的函数pre_map和arr。其中,pre_map将是通过我们的测试用例提供给您的内置映射,arr将是一个数字数组。对于给定数组中的每个元素,函数应检查该元素是否作为其键之一存在于给定的pre_映射中Javascript 编写js程序创建map_armstrong函数,javascript,Javascript,创建一个具有两个参数的函数pre_map和arr。其中,pre_map将是通过我们的测试用例提供给您的内置映射,arr将是一个数字数组。对于给定数组中的每个元素,函数应检查该元素是否作为其键之一存在于给定的pre_映射中 例如: 预映射{0=>true,1=>true,10=>false,19=>false,370=>true} arr[10407] 如果存在,则从预映射中删除 例如: 预映射{0=>true,1=>true,19=>false,370=>true} 否则,在
- 例如:
- 预映射{0=>true,1=>true,10=>false,19=>false,370=>true}
- arr[10407]
- 如果存在,则从预映射中删除
- 例如:
- 预映射{0=>true,1=>true,19=>false,370=>true}
- 例如:
- 否则,
,根据该键是否为在给定的pre_map中添加一个新键
,其值将为布尔值,如armstrong编号
或true
。(还记得上次回购协议中的阿姆斯特朗数字吗?)false
- 例如:
- 预映射{0=>true,1=>true,19=>false,370=>true,407=>true}
- 例如:
- 然后,返回更新后的地图(pre\u map)
功能任务09(预映射,arr){
设obj=Object.fromEntries(pre_map);
函数isArmstrong(编号){
如果(数字<0){
返回false;
}
让num_to_str=number.toString();
设和=0;
for(设i=0;i }
[编辑:由于要求中不清楚是否应直接修改原始地图,因此我添加了第二个解决方案]
解决方案1(直接修改原始地图):
功能任务09(预映射,arr){
函数isArmstrong(num){
如果(num<0)返回false;
常量numToStr=num.toString();
设和=0;
for(设i=0;i{
if(预映射有(项目)){
预映射。删除(项目);
}否则{
预映射集(项目,isArmstrong(项目));
}
});
返回pre_图;
}
/********
*试验*
********/
const myMap=新映射();
myMap.set(0,true);
myMap.set(1,true);
myMap.set(10,false);
myMap.set(19,false);
myMap.set(370,true);
常量myArr=[10407];
log('myArr:',myArr);
log('myMap(before):');
对于(myMap的let项){
控制台日志(项目);
}
task09(myMap,myArr);
log('myMap(后面):');
对于(myMap的let项){
控制台日志(项目);
}
我认为问题在于您的isArmstrong()
函数。阿姆斯特朗数是“一个等于其数字的立方体之和的数”,因此您应该替换为sum+=Math.pow(num,num-to-str.length)代码>带有sum+=Math.pow(num,3)代码>谢谢,我做了更改,但仍然没有通过测试用例。