我有两个依赖的下拉列表,第一个列表从array1获取服务,第二个列表根据列表1的结果过滤来自array2的列表。
这就像它应该在这个小提琴上一样工作:小提琴
问题是第二个值有用逗号分隔的值。我需要将它们分开,然后检查值2中的所有其他值,并且只显示一个实例。
即
“旗(高级)”、“旗(高级)、旗(440克)”、“旗(550克)”
会是
“旗(高级)”、“旗(440克)”、“旗(550克)”
这是我的密码:
function menu2() {
var serviceValue = document.getElementById("service-type").value;
var el = document.getElementById("media-type");
var newArray = media.filter(function(r) {return r[1].includes(serviceValue)})
var currentlyAdded = [];
el.innerHTML = "";
newArray.forEach(function(r) {
if(currentlyAdded.indexOf(r[1]) === -1) {
var option = document.createElement('option');
option.text = r[1];
el.appendChild(option);
currentlyAdded.push(r[1]);
}
})
}我相信我需要使用.split和.concat,但是我想不出如何将它添加到脚本中。
发布于 2022-02-24 08:10:26
可以使用Set创建具有唯一值的数组。
const str = `Banner (Premium), Banner (Premium), Banner (440gsm)`
const splitted = [...new Set(str.split(`, `))];
console.log(splitted);
发布于 2022-02-24 08:21:31
一种基于split的解决方案
const str = '"Banner (Premium)", "Banner (Premium), Banner (440gsm)", "Banner (550gsm)"'
// desired "Banner (Premium)", "Banner (440gsm)", "Banner (550gsm)"
const desired = str.split('"').filter(x => /[A-Z][a-z]/.test(x)).map( x => {
const splitted = x.split(',');
return (splitted.length < 2)?splitted[0]:splitted[1];
});
console.log(desired)
我相信寻找csv你会找到纯粹的正则表达式
https://stackoverflow.com/questions/71248828
复制相似问题