【发布时间】:2021-08-04 18:11:15
【问题描述】:
我需要基于检查字段的唯一性来创建动态对象数组。我需要用这种格式的对象组成一个数组
[
{ text : "select", label: "select", value: []},
{ text: "abc" , label: "abc" , value: [1,2,3] }
]
我必须只获取一个具有“选择”字段的对象,然后操作该对象。如果不存在,则需要创建一个。这里的 value 是一个字符串数组,在检查唯一性后将元素推入其中。 . 将传递一个输入字符串,将与值数组进行比较。假设“test”是一个输入,那么数组应该是这样的,
{ text : "select", label: "select", value: ["test1"]}
如果 test1, test2 随后通过,那么最终的数组应该是这样的
{ text : "select", label: "select", value: ["test1", "test2", "test3"]}
如果再次传递test1,则不应推送它,因为它已经存在于数组中。比较应该不区分大小写
function checkAndPush(arr, inputVal){
let finalArr = [];
if (arr?.some((item) => item.text === "select")) {
finalArr = [...new Set(arr.map((item) => item.text.toLocaleLowercase() === inputVal.toLocaleLowercase())
} else {
finalArr.push({ text : "select", label: "select", value: [inputVal]});
}
console.log(finalArr);
}
【问题讨论】:
-
if语句的 then 情况产生一个布尔数组,else 情况只在数组中放置一个对象。我不明白你怎么能期望它起作用。
标签: javascript arrays ecmascript-6 ecmascript-5 ecmascript-2016