Javascript 筛选出数组以获取唯一值并填充选择下拉框

Javascript 筛选出数组以获取唯一值并填充选择下拉框,javascript,reactjs,react-table,Javascript,Reactjs,React Table,我有一个来自API的数组,它可以包含4个不同值的组合: (无、A、B、C) 该数组用于填充选择下拉框 当我运行web应用程序时,我的网页中的下拉框(选择)如下所示: <select> <option value>All</option> <option value="A,B,C">ABC</option> <option value></option> <option val

我有一个来自API的数组,它可以包含4个不同值的组合:

(无、A、B、C)

该数组用于填充选择下拉框

当我运行web应用程序时,我的网页中的下拉框(选择)如下所示:

<select>
    <option value>All</option>
    <option value="A,B,C">ABC</option>
    <option value></option>
    <option value="A,C">AC</option>
    <option value="B">B</option>
    <option value="B,C">BC</option>
    <option value="C">C</option>
select>
当我将选项写到控制台时,我看到的是:

0: (3) ["A", "B", "C"]
1: (0) []
2: (2) ["A", "C"
3: (1) ["B"]
4: (2) ["B", "C"]
5: (1) ["C"]
因此,因为我知道在我的select控件中只有4个可能的值,All、A、B和C,我想知道是否有一种方法可以过滤掉选项数组,只显示每个唯一的值,使其看起来像这样:

<select>
    <option value>All</option>
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
</select>
<select>
    <option value>All</option>
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
</select>

全部的
A.
B
C

在您的
forEach
中添加一个检查,并首先创建一个临时数组,然后返回一个
集合
,使其唯一:

let tempArr = [];
preFilteredRows.forEach(row => {
    if(row.values[id].length == 1) tempArr.push(row.values[id][0])
})
return [...new Set(tempArr)]

您可以为value
All
None
添加默认选项,以两者中的任何一种情况为准

在您的
forEach
中添加一个复选框,并首先创建一个临时数组,然后返回一个
集合
,使其唯一:

let tempArr = [];
preFilteredRows.forEach(row => {
    if(row.values[id].length == 1) tempArr.push(row.values[id][0])
})
return [...new Set(tempArr)]

您可以为value
All
None
添加一个默认选项,以两者中的任何一种情况为准

只需将数组缩小为一个巨大的数组并将其转换为一个集合即可

array=[[“A”、“B”、“C”]、[]、[“A”、“C”]、[“B”]、[“B”、“C”]、[“C”]]
const all=数组.reduce((acc,内部)=>acc.concat(内部),[])
const unique=新集合(全部)
console.log(唯一)

只需将您的阵列缩小为一个巨大的阵列,然后将其转换为一组

array=[[“A”、“B”、“C”]、[]、[“A”、“C”]、[“B”]、[“B”、“C”]、[“C”]]
const all=数组.reduce((acc,内部)=>acc.concat(内部),[])
const unique=新集合(全部)
console.log(唯一)

这让它变得干净了一点。选项值现在如下所示:全部,A,A,B,B,C…@SkyeBoniwell编辑答案。请注意,您需要推送元素,而不是数组(
row.values[id][0]
)您好,谢谢,它现在看起来像:All,A,B。但它缺少C。我不知道为什么?在这种情况下,
preFilteredRows
的值是多少?preFilteredRows是单元格,它们是:[A,B],[B,C],[A,B,C],[C]。因此,如果我在下拉列表中选择A,它将显示所有带有“A”的单元格…B和C的单元格都是一样的…这会稍微清理一下。选项值现在如下所示:全部,A,A,B,B,C…@SkyeBoniwell编辑答案。请注意,您需要推送元素,而不是数组(
row.values[id][0]
)您好,谢谢,它现在看起来像:All,A,B。但它缺少C。我不知道为什么?在这种情况下,
preFilteredRows
的值是多少?preFilteredRows是单元格,它们是:[A,B],[B,C],[A,B,C],[C]。因此,如果我在下拉列表中选择A,它将显示所有带有“A”的单元格…B和C都是一样的…我不能做得太多,因为“option”不是数组,而是上面代码中的“set”
array=new array(options)
我不能做得太多,因为“option”不是数组,而是上面代码中的“set”
array=new array(选项)