ドコモユーザーなら、ドコモ光が断然おトク

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

  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

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で質問しましょう!


人気Q&Aランキング

おすすめ情報