2017-07-30 8 views
0

とoption`の作成:は `次を考えるとアンダースコア

function autoCompleteOptions(json) { 
 
     _.map(json, function(x) { 
 
      const a = x["a"]; 
 
      const b = x["b"]; 
 
      var option = document.createElement('option'); 
 
      option.setAttribute('data-value', a); 
 
      option.value = b; 
 
      console.log('option:', option); 
 
      return option; 
 
     }) 
 
    } 
 

 
var result = autoCompleteOptions([ 
 
    { 
 
     "a" : "hi", 
 
     "b" : "world" 
 
    } 
 
    ]); 
 

 
console.log('result:', result);
<script src="http://underscorejs.org/underscore-min.js"></script>

なぜconsole.logundefinedを示していますか?私はoption HTML要素の配列を期待しています。

+2

あなたの関数( 'autoCompleteOptions')は、明示的に値を返さないので? – undefined

+0

あなたのスニペットでは、 'underscore.js'を含めないようです。 –

+0

このコードにはJSONはありません。 JSONはデータを文字列としてエンコードするためのフォーマットです。あなたは配列とオブジェクトを持っています。 – 4castle

答えて

1

私は、これは単にstackoverflowのがどのように動作するかの問題です

return _.map(json, function(x) {...} 
0

あなたの関数から_.mapの結果を返すために必要があると思います。 _ライブラリを非セキュアソース(http://underscorejs.org/underscore-min.js)からロードしようとしていますが、SOはhttpsを使用しています。

https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.jsのような安全なソースからロードして_を修正する問題はありません。

2番目の問題として、他の人が指摘しているように、autoCompleteOptions関数から何かを返す必要があります。

function autoCompleteOptions(json) { 
 
    return _.map(json, function(x) { 
 
    const a = x["a"]; 
 
    const b = x["b"]; 
 
    var option = document.createElement('option'); 
 
    option.setAttribute('data-value', a); 
 
    option.value = b; 
 
    console.log('option:', option); 
 
    return option; 
 
    }) 
 
} 
 

 
var result = autoCompleteOptions([{ 
 
    "a": "hi", 
 
    "b": "world" 
 
}]); 
 

 
console.log('result:', result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>

関連する問題