鉴于以下内容:
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.log
显示undefined
?我期待一系列option
HTML元素。
答案 0 :(得分:1)
我认为您需要从函数
返回_.map
的结果
return _.map(json, function(x) {...}
答案 1 :(得分:0)
这仅仅是Stackoverflow工作原理的一个问题。您尝试从非安全来源(_
)加载http://underscorejs.org/underscore-min.js
库,但SO使用https
。
从https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js等安全来源加载,以解决_
未定义的问题。
作为次要问题,正如其他人所指出的那样,您需要从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>