Javascript 如何使用JS filter函数返回所选选项的值

Javascript 如何使用JS filter函数返回所选选项的值,javascript,ecma,Javascript,Ecma,我想获取所选选项的值返回的数组。 我想使用Array.prototype.filter 我可以让过滤器返回所选选项的数组,但不能返回选项值的数组。是否有方法返回所选选项的值数组 我可以使用forEach或for循环获得一个值数组,但不能使用filter函数。如果这不可能,我想知道原因 用这些值进行选择 <select multiple className="form-control"

我想获取所选选项的值返回的数组。 我想使用Array.prototype.filter

我可以让过滤器返回所选选项的数组,但不能返回选项值的数组。是否有方法返回所选选项的值数组

我可以使用forEach或for循环获得一个值数组,但不能使用filter函数。如果这不可能,我想知道原因

用这些值进行选择

<select
                multiple
                className="form-control"
                id="genre"
                onChange={handleGenreChnage}>
                <option>drama</option>
                <option>music</option>
                <option>adventure</option>
                <option>historical</option>
                <option>action</option>
</select>

这回答了你的问题吗?特别是这个答案:您需要的是
filter
map
,而不是带有条件的
forEach
。是的,仅使用
filter
filter()
是不可能做到这一点的,它只是一种输入或输出方法,不会影响值本身。如果您要查找单个调用,可以使用
reduce()
方法,在该方法中,您可以决定要包含哪些元素并将选项转换为它们的值。非常感谢-@RoboRobok stackoverflow.com/a/54578977/4403732是我要查找的!!
const handleGenreChnage = (event) => {
    const { options } = event.target;
    
    const optionsArray = [...options];

    const values  = optionsArray.forEach((option) => {
    
        if (option.selected) {
            return option.value;
            
        }
    });
    
    setForm({ ...form, genre: values.toString() });
};