Javascript:搜索键以返回值

时间:2019-03-20 14:52:02

标签: javascript

您好,正在使用javascript:数据将被映射。关键将是搜索目标。如果您在数据中找到该目标,请返回该词的值并将其显示在页面上。

我无法使用它的搜索功能。就像,如果我想搜索Harry,它应该给我结果“一个古老的英语单词”。

对此有什么建议吗?

function myfunction() {
  var data = new Map();
  data.set("Harry", "something.");
  data.set("Corhoo", "corn.");
  data.set("Elephant", "big ");

  var keys = Object.keys(data);

  //Need help with this loop, to get the search work
  for (var i = 0; i < keys.length; i++) {
    var key = keys[i];
    if (keys[i] == "Harry") {
      document.getElementById("result").innerHTML = data.get("Harry");
    }
    //console.log(data[keys[i]]);
  }
}
Enter: <input type="text" />
<p id="result"></p>
<p id="result2"></p>
<input type="button" value="SearchIt" onclick="myfunction()" />

3 个答案:

答案 0 :(得分:1)

如果您从keys执行var keys = Object.keys(data);的console.log,它将给出一个空数组。您可能不需要做Object.keys

function myfunction() {
  var data = new Map();
  data.set("Harry", "An old English word that means Potter.");
  data.set("Corhoo", "The Gaelic version of America Cornhole.");
  data.set("Elephant", "A largest plant resembling an Ele");
  if (data.has('Harry')) {
    document.getElementById("result").innerHTML = data.get("Harry");
  }
}
Enter: <input type="text" />
<p id="result"></p>

<p id="result2"></p>

<input type="button" value="SearchIt" onclick="myfunction();" />

答案 1 :(得分:1)

为什么要使用循环?最好使用Map.proptype.has方法:

Enter: <input type="text" id="key"/>
<p id="result"></p>
<p id="result2"></p>
<input type="button" value="SearchIt" onclick="search()" />
var data = new Map();
data.set("Harry", "An old English word that means Potter.");
data.set("Corhoo", "The Gaelic version of America Cornhole.");
data.set("Elephant", "A largest plant resembling an Ele");

function search(key) {

  var key = document.getElementById('key').value;
  var result = document.getElementById("result");

  if(data.has(key)) {
      result.innerHTML = data.get(key);
  } else {
      result.innerHTML = "No key found";
  }
}

答案 2 :(得分:0)

也许我对这个问题有误解,但这应该可以映射出键并在找到键后返回值。

const data = {
  'Harry': 'An old English word'
}

Object.keys(data).map(key => {
  if (key === 'Harry') {
    return data[key]
  }
}

ETA:

如果使用Map创建键值对,请改用以下方法:

data.forEach(item => {
  if(item[0] === 'Harry') {
    document.getElementById("result").innerHTML = item[1]
    // or whatever you want to run if 'Harry' is found
  }
}

用于搜索特定术语:

const searchTerm = 'Harry'

data.forEach(item => {
  if(item[0] === searchTerm) {
    document.getElementById("result").innerHTML = item[1]
    // or whatever you want to run if 'Harry' is found
  }
}