プロが教えるわが家の防犯対策術!

たとえばイチゴと検索したならば赤いとか酸っぱいとか言う回答が返ってくるjavascriptをやりたいです。どうすればいいんどえしょうか。

A 回答 (2件)

う〜〜〜ん、せっかく30ぷんもかけてみじかいコードにしてかいたのにはんのうがないね。


ちょっとやっつけかんが、ひどすぎたでしょうか。
やっぱり hash検索 ではなく、map をつかうべきでした。
あちこちできいてまわっているようですが、しょうかふりょうをおこしませんように
ごじあいください。


<!DOCTYPE html>
<meta charset="UTF-8">
<html lang="ja">
<title>?</title>
<style>

</style>

<body>
<h1>Test</h1>
<input type="search" value="リンゴ" onblur="dic(this.value)">
<br>
<textarea cols="80" rows="10"></textarea>

<body>

<script>

const HASH = new Map ();

const words = [
  ['苺', '赤い', 'おいしい', 'すっぱい'],
  ['リンゴ', '青森', '赤い', 'おいしい', 'すっぱい', 'シャイニーアップルジュース']
];


class R {
 constructor (key, level) {
  this.key = [ ].concat (key);
  this.level = level;
 }
 
 add (key, level) {
  this.key.push (key);
  let
   l0 = this.level,
   l1 = level;
  this.level = (l0 + l1) / (1 + l0 * l1);
  return this;
 }
 
 sort () {
  this.key.sort ((a, b) => HASH.get (a).level < HASH.get (b).level);
 }
}



for (let ws of words) {
 let key = ws.shift (), gain = 1 / ws.length, c = 1;
 HASH.set (key, new R (ws, c));
 for (let w of ws)
  c *= gain, HASH.has (w)) ? HASH.get (w).add (key, c): HASH.set (w, new R (key, c));
}


function dic (key) {
 let mess = '知らない';
 if (HASH.has (key)) {
  let obj = HASH.get (key);
  obj.sort ();
  mess = obj.key.map (s => s + '(' + HASH.get (s).level+ ')').join ('\n');
 }
 document.querySelector ('textarea').value = mess;
}
</script>
    • good
    • 0

う〜ん、だれもこたえてこないね。


これがただしいほうほうかもわからない。
つかわれたことばにすうちをつけてみた。

<!DOCTYPE html>
<meta charset="UTF-8">
<html lang="ja">
<title>?</title>
<style>

</style>

<body>
<h1>Test</h1>
<input type="search" value="リンゴ" onblur="dic(this.value)"><br>
<textarea cols="80" rows="10"></textarea>

<body>

<script>

class R {
 constructor (key, level) {
  this.key = [ ].concat (key);
  this.level = level;
 }
 
 add (key, level) {
  this.key.push (key);
  let
   l0 = this.level,
   l1 = level;
  this.level = (l0 + l1) / (1 + l0 * l1);
  return this;
 }
 
 sort () {
  this.key.sort ((a, b) => HASH[a].level < HASH[b].level);
 }
}


let words = [
  ['苺', '赤い', 'おいしい', 'すっぱい'],
  ['リンゴ', '青森', '赤い', 'おいしい', 'すっぱい', 'シャイニーアップルジュース']
];

let HASH = { };

for (let ws of words) {
 let key = ws.shift ();
 let gain = 1 / ws.length;
 let c = 1;

 HASH[key] = new R (ws, c);
 
 for (let w of ws) {
  c *= gain;
  if (w in HASH) {
   HASH[w].add (key, c);
  }
  else {
   HASH[w] = new R (key, c);
  }
 }
}


function dic (key) {
 let mess = '知らない';
 if (key in HASH) {
  let obj = HASH[key];
  obj.sort ();
  mess = obj.key.map (s => s + '(' +HASH[s].level+ ')').join ('\n');
 }
 document.querySelector ('textarea').value = mess;
}
</script>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!