用对象值替换对象名称的任何出现

时间:2018-03-16 19:22:00

标签: javascript jquery

到目前为止,我有这个替换输入框中的文本,如果它有对象名,对象值为:

var obj = {
    '1': 'fish',
    'q': 'apple',
    'z': 'banana',
};

$("#inputBoxID").on("keyup", function() {
    if(obj.hasOwnProperty($("#inputBoxID").val())) $(this).val(obj[$("#inputBoxID").val()]);
});

我想修改它,以便在出现任何对象名称时,它会用值替换对象名称,这里是我尝试做的一个例子:

用户输入hello q我希望将其替换为:hello apple

我将如何做到这一点?

3 个答案:

答案 0 :(得分:2)

您可以按空格分割,映射然后加入!

var obj = {    '1': 'fish',    'q': 'apple',    'e': 'banana'};

$("#inputBoxID").on("keyup", function() {
  var str = $("#inputBoxID").val().split(' ').map(function(word) {
    return obj[word] || word;    
  }).join(' ');
  $(this).val(str);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="inputBoxID">

答案 1 :(得分:1)

你可以简单地用它的值替换任何出现的键,如下所示(我知道它对于我们在对象中迭代的每次按键都很重)。

var obj = {
    '1': 'fish',
    'q': 'apple',
    'z': 'banana',
};

$("#inputBoxID").on("keyup", function() {
  var str = $("#inputBoxID").val();
  for(var x in obj){
    if(obj.hasOwnProperty(x)){
      str=str.replace(x,obj[x]);
    }
  }
  $(this).val(str);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="inputBoxID" type="text">

答案 2 :(得分:0)

您可能希望通过将字符串拆分为单词数组然后替换它来单独替换每个单词:

  $("#inputBoxID").val((_, v) => v.split(" ").map(word => obj[word] || word).join(" "))