选择列表选项值中的对象

时间:2019-01-29 14:38:31

标签: javascript jquery

要创建一个包含所有选择列表选项值及其内部文本的对象。问题在于,当控制台日志看起来像是在创建一个不同的对象时,而不是在其中创建一个具有所有选项值的对象。

[我的代码在这里] [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>

我错了吗?

1 个答案:

答案 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>