Javascript 通过数组转换在数组中按值查找键

Javascript 通过数组转换在数组中按值查找键,javascript,Javascript,我有一个id为“自动完成输入”的简单输入字段和一个id为“搜索按钮”的按钮。然后我使用一个带有键值对的PHP数组,这样您就可以在输入字段中键入一个值,然后找到该值的正确键值。我正在为此使用javascript,因此我还需要将PHP数组转换为javascript。请参阅下面我的代码: <nav> <div class="nav-wrapper"> <div class="input-field center-align">

我有一个id为“自动完成输入”的简单输入字段和一个id为“搜索按钮”的按钮。然后我使用一个带有键值对的PHP数组,这样您就可以在输入字段中键入一个值,然后找到该值的正确键值。我正在为此使用javascript,因此我还需要将PHP数组转换为javascript。请参阅下面我的代码:

  <nav>
    <div class="nav-wrapper">
      <div class="input-field center-align">
        <input type="text" class="autocomplete" name="search" id="autocomplete-input" placeholder="Search.." />
        <button class="icon" id="searchButton"></button>
      </div>
    </div>
  </nav>

  <?php
    $testArray = array (
      'yellow' => 'banana',
      'red' => 'apple',
      'green' => 'pear'
    );
  ?>

  $('document').ready(function(){
      $('#searchButton').click(function(){
          var compSearch = document.getElementById('autocomplete-input').value;
          var tempArray = <?php echo json_encode($testArray); ?>;
          var key = search(compSearch, tempArray);
          document.getElementById("autocomplete-input").value = (key);
      })
      $('#searchButton').keypress(function(e){
          if(e.which == 13){ //Enter key pressed
              $('#searchButton').click(); //Trigger search button click event
          }
      });
  });

  function search(nameKey, myArray){
      for (var i=0; i < myArray.length; i++) {
          if (myArray[i].name === nameKey) {
            return myArray[i];
          }
      }
  }

$('document').ready(函数(){
$(“#搜索按钮”)。单击(函数(){
var compSearch=document.getElementById('autocomplete-input')。值;
var tempArray=;
var key=search(compSearch,tempArray);
document.getElementById(“自动完成输入”).value=(键);
})
$(“#搜索按钮”)。按键(功能(e){
如果(e.which==13){//按下回车键
$(“#搜索按钮”)。单击();//触发搜索按钮单击事件
}
});
});
函数搜索(名称键,myArray){
对于(var i=0;i

无论输入什么,我只会在单击searchButton时返回“undefined”。我不确定这是否是“搜索”功能不能正常工作-我认为$testArray的json_编码也可能会导致问题?非常感谢您的帮助。

tempArray
将不是数组(*),而是普通对象,如下所示:

{
  yellow: 'banana',
  red: 'apple',
  green: 'pear'
}
*只有作为索引数组的PHP数组(从索引0开始,没有间隙)才能转换为JS数组。否则,它们将转换为普通对象

所以
search
应该像下面这样:

return myArray[nameKey];

。。。但是可以选择更好的变量名,因为它不是数组。

tempArray
将不是数组(*),而是普通对象,如下所示:

{
  yellow: 'banana',
  red: 'apple',
  green: 'pear'
}
*只有作为索引数组的PHP数组(从索引0开始,没有间隙)才能转换为JS数组。否则,它们将转换为普通对象

所以
search
应该像下面这样:

return myArray[nameKey];

。。。但可能选择更好的变量名,因为它不是数组。

这不太可能是PHP问题,请编辑您的问题以包含页面中显示的代码。JSONed
$testArray
不是JS数组,它是JS对象,因此是。。从未输入i
循环。这不太可能是PHP问题,请编辑您的问题以包含页面中显示的代码。JSONed
$testArray
不是JS数组,而是JS对象,因此为。。i循环从未被输入。