要创建一个包含所有选择列表选项值及其内部文本的对象。问题在于,当控制台日志看起来像是在创建一个不同的对象时,而不是在其中创建一个具有所有选项值的对象。
[我的代码在这里] [1]
let values = {};
$('select option').each(function() {
var optionValue = $(this).attr('value');
var optionText = $(this).text();
console.log(optionValue, optionText);
Object.assign(values, {optionValue: optionText});
console.log(values);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select>
<option value="one">Value one</option>
<option value="two">Value two</option>
<option value="three">Value three</option>
</select>
我错了吗?
答案 0 :(得分:2)
您的代码正在创建一个以optionValue
作为键的对象,并且每次都会覆盖它。如果您打算创建一个以optionValue
作为键的对象,请使用computed property names。您需要将optionValue
与[]
进行包装,才能将变量用作键:
let values = {};
$('select option').each(function() {
var optionValue = $(this).attr('value');
var optionText = $(this).text();
Object.assign(values, {
[optionValue]: optionText
});
});
console.log(values);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select>
<option value="one">Value one</option>
<option value="two">Value two</option>
<option value="three">Value three</option>
</select>