编写js程序创建map_armstrong函数

创建一个具有两个参数pre_maparr 的函数。其中pre_map将是通过我们的测试用例提供给您的内置地图,而arr将是一个数字数组。对于给定数组中的每个元素,您的函数应该检查该元素是否作为其键之一存在于给定的pre_map中。

  • 例如:

    • pre_map { 0 => 真,1 => 真,10 => 假,19 => 假,370 => 真 }

    • 到达 [10, 407]

  • 如果存在的话,delete它来自pre_map

    • pre_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));

}

我的代码有什么问题以及为什么它没有通过一些测试用例。



qq_花开花谢_0
浏览 69回答 1
1回答

慕妹3242003

方案一(直接修改原图):function task09(pre_map, arr) {&nbsp; function isArmstrong(num) {&nbsp; &nbsp; if (num < 0) return false;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; const numToStr = num.toString();&nbsp; &nbsp; let sum = 0;&nbsp; &nbsp; for (let i = 0; i < numToStr.length; i++) {&nbsp; &nbsp; &nbsp; sum += Math.pow(parseInt(numToStr[i]), 3);&nbsp; &nbsp; }&nbsp; &nbsp; return num === sum;&nbsp; }&nbsp; arr.forEach(item => {&nbsp; &nbsp; if (pre_map.has(item)) {&nbsp; &nbsp; &nbsp; pre_map.delete(item);&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; pre_map.set(item, isArmstrong(item));&nbsp; &nbsp; }&nbsp; });&nbsp;&nbsp;&nbsp; return pre_map;}/********&nbsp;* test *&nbsp;********/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) {&nbsp; console.log(item);}task09(myMap, myArr);console.log('myMap (after):');for (let item of myMap) {&nbsp; console.log(item);}解决方案2(原图不做修改):function task09(pre_map, arr) {&nbsp; const post_map = new Map(pre_map);&nbsp; function isArmstrong(num) {&nbsp; &nbsp; if (num < 0) return false;&nbsp; &nbsp; const numToStr = num.toString();&nbsp; &nbsp; let sum = 0;&nbsp; &nbsp; for (let i = 0; i < numToStr.length; i++) {&nbsp; &nbsp; &nbsp; sum += Math.pow(parseInt(numToStr[i]), 3);&nbsp; &nbsp; }&nbsp; &nbsp; return num === sum;&nbsp; }&nbsp; arr.forEach(item => {&nbsp; &nbsp; if (post_map.has(item)) {&nbsp; &nbsp; &nbsp; post_map.delete(item);&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; post_map.set(item, isArmstrong(item));&nbsp; &nbsp; }&nbsp; });&nbsp; return post_map;}/********&nbsp;* test *&nbsp;********/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) {&nbsp; console.log(item);}console.log('myUpdatedMap:');for (let item of myUpdatedMap) {&nbsp; console.log(item);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript