尝试填充React-multi-select-dropdown的选项数组
this.state.users.map((user) => {
if (!this.state.options.includes(user.badgeId))
this.state.options.push({ name: user.badgeId, id: user._id });
return this.state.options;
});
在options数组中获取相同值的多个值。
<Multiselect
options={this.state.options} // Options to display in the dropdown
//isObject={false}
onSelect={this.onSelect} // Function will trigger on select event
// onRemove={this.onRemove} // Function will trigger on remove event
displayValue='name' // Property name to display in the dropdown options
/>
一旦选择并提交表单,所选的用户。badgeId将需要位于其自己的数组中。
答案 0 :(得分:1)
问题:您的代码检查数组user.badgeId
中的值options
是否不是。该数组始终返回true,因为此类数组中填充了以下对象:{ name: user.badgeId, id: user._id }
一个简单的例子:
const myArray = [{a: 1, b:'banana'}, {a: 2, b:'banana'}]
myArray.includes(1) // false
相反,您可以使用.find()获取具有name === badgeId
的数组中的对象。
find()返回满足提供的测试功能的第一个元素的值。如果未找到,则为undefined
。
现在,我们可以搜索数组中的和元素,如果找到它,则可以执行某些操作。像这样:
const findResult = this.state.options.find((obj) => obj.name === user.badgeId);
if (typeof findResult === "undefined")
// Do something
我对这些单词不太满意,因此如果感到困惑,请随时澄清。或者您可以查看this answer是否有帮助
答案 1 :(得分:0)
const b = this.state.users.map((obj, index) => ({
name: obj.username,
id: obj.badgeId,
}));