首页 > 解决方案 > 简单的 javascript 替代密码

问题描述

我正在尝试将总和的结果加密为 base64 代码。

var map = {
  1: 'dG',
  2: 'h2, 3: '
  gF,
  4: 'pz',
  5: 'V0'
};

if (map.indexOf(sum1) > -1) {
  ans = map.indexOf(sum1)
} else {
  console.log("Incorrect");
}

我想将我的号码(sum1)与我的数组的索引匹配并将字母保存到变量ans中。

我是编程新手,如果有人可以在这里帮助我,我将不胜感激。如果我解释得不够好,请要求澄清。

标签: javascript

解决方案


indexOf 方法适用于数组/字符串,因此由于您有一个Object,所以它不起作用。你的想法是正确的,检查属性是否存在,你只是做错了。

检查对象中是否存在属性的最佳方法是使用hasOwnProperty

var map = {
  1: 'dG',
  2: 'h2', 
  3: 'gF',
  4: 'pz',
  5: 'V0'
};

function getText (obj, key) {
  // if(obj.hasOwnProperty(key)){
  //   return obj[key];
  // } else {
  //   return null;
  // }
  return obj.hasOwnProperty(key) ? obj[key] : null;
}

console.log(getText(map, 1));
console.log(getText(map, 5));
console.log(getText(map, 100));

但是由于你有字符串,你不必使用hasOwnProperty,你可以只使用一个真实的检查,因为字符串评估为 true

var map = {
  1: 'dG',
  2: 'h2', 
  3: 'gF',
  4: 'pz',
  5: 'V0'
};

function getText (obj, key) {
  // if (obj[key]) {
  //   return obj[key];
  // } else {
  //   return null;
  // }
  return obj[key] ? obj[key] : null;
}

console.log(getText(map, 1));
console.log(getText(map, 5));
console.log(getText(map, 100));

或者只是使用一个数组而不是一个对象来保存你的字符串。数组的问题是第一个索引为零,因此所有索引都会向下移动一个。因此,要使对象中的 1 与数组中的 1 匹配,您必须在索引 0 中放置一些东西。

var map = [null, 'dG', 'h2', 'gF', 'pz', 'V0'];

function getText (obj, key) {
  // if (obj[key]) {
  //   return obj[key];
  // } else {
  //   return null;
  // }
  return obj[key] ? obj[key] : null;
}

console.log(getText(map, 1));
console.log(getText(map, 5));
console.log(getText(map, 100));


推荐阅读