为了账号安全,请及时绑定邮箱和手机立即绑定

编写js程序创建map_armstrong函数

编写js程序创建map_armstrong函数

qq_花开花谢_0 2023-08-18 16:20:15
创建一个具有两个参数pre_map和arr 的函数。其中pre_map将是通过我们的测试用例提供给您的内置地图,而arr将是一个数字数组。对于给定数组中的每个元素,您的函数应该检查该元素是否作为其键之一存在于给定的pre_map中。例如:pre_map { 0 => 真,1 => 真,10 => 假,19 => 假,370 => 真 }到达 [10, 407]如果存在的话,delete它来自pre_mappre_map { 0 => 真,1 => 真,19 => 假,370 => 真 }例如:否则,add a new key在给定的pre_map中,其值将是一个布尔值true,或者false基于该键是否是一个armstrong number。(还记得之前存储库中的阿姆斯特朗数字吗?)pre_map { 0 => 真,1 => 真,19 => 假,370 => 真,407 => 真}例如:然后,返回更新后的地图 ( pre_map )function task09(pre_map, arr) {  let obj = Object.fromEntries(pre_map);  function isArmstrong(number) {    if (number < 0) {      return false;    }    let num_to_str = number.toString();    let sum = 0;    for (let i = 0; i < num_to_str.length; i++) {      let num = parseInt(num_to_str[i]);      sum += Math.pow(num, num_to_str.length);    }    return (number == sum);  }  for (let i = 0; i < arr.length; i++) {    let entry = arr[i].toString();    if (obj.entry !== undefined) {      delete obj.entry;    } else {      obj.entry = isArmstrong(parseInt(entry));    }  }  return new Map(Object.entries(obj));}我的代码有什么问题以及为什么它没有通过一些测试用例。
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

方案一(直接修改原图):

function task09(pre_map, arr) {

  function isArmstrong(num) {

    if (num < 0) return false;

    

    const numToStr = num.toString();

    let sum = 0;


    for (let i = 0; i < numToStr.length; i++) {

      sum += Math.pow(parseInt(numToStr[i]), 3);

    }


    return num === sum;

  }


  arr.forEach(item => {

    if (pre_map.has(item)) {

      pre_map.delete(item);

    } else {

      pre_map.set(item, isArmstrong(item));

    }

  });

  

  return pre_map;

}



/********

 * test *

 ********/


const myMap = new Map();

myMap.set(0, true);

myMap.set(1, true);

myMap.set(10, false);

myMap.set(19, false);

myMap.set(370, true);


const myArr = [10, 407];


console.log('myArr:', myArr);

console.log('myMap (before):');

for (let item of myMap) {

  console.log(item);

}


task09(myMap, myArr);


console.log('myMap (after):');

for (let item of myMap) {

  console.log(item);

}

解决方案2(原图不做修改):

function task09(pre_map, arr) {

  const post_map = new Map(pre_map);


  function isArmstrong(num) {

    if (num < 0) return false;


    const numToStr = num.toString();

    let sum = 0;


    for (let i = 0; i < numToStr.length; i++) {

      sum += Math.pow(parseInt(numToStr[i]), 3);

    }


    return num === sum;

  }


  arr.forEach(item => {

    if (post_map.has(item)) {

      post_map.delete(item);

    } else {

      post_map.set(item, isArmstrong(item));

    }

  });


  return post_map;

}



/********

 * test *

 ********/


const myMap = new Map();

myMap.set(0, true);

myMap.set(1, true);

myMap.set(10, false);

myMap.set(19, false);

myMap.set(370, true);


const myArr = [10, 407];


const myUpdatedMap = task09(myMap, myArr);


console.log('myArr:', myArr);

console.log('myMap:');

for (let item of myMap) {

  console.log(item);

}

console.log('myUpdatedMap:');

for (let item of myUpdatedMap) {

  console.log(item);

}


查看完整回答
反对 回复 2023-08-18
  • 1 回答
  • 0 关注
  • 65 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信