Javascript从唯一的var中删除值
我发现了一些其他类似的问题,我试图从中解决,但我的问题似乎略有不同 我需要从基于其他输入的名称变量中删除选项/值,但是我在删除某些选项/值时遇到困难,因为它们实际上并不相同Javascript从唯一的var中删除值,javascript,arrays,Javascript,Arrays,我发现了一些其他类似的问题,我试图从中解决,但我的问题似乎略有不同 我需要从基于其他输入的名称变量中删除选项/值,但是我在删除某些选项/值时遇到困难,因为它们实际上并不相同 <td>1</td><td>JIM</td><td>JOHNSON</td> <td>5</td><td>JIM</td><td>JOHNSON</td> 由于数据导入代码的方式(
<td>1</td><td>JIM</td><td>JOHNSON</td>
<td>5</td><td>JIM</td><td>JOHNSON</td>
由于数据导入代码的方式(目前无法更改),因此可能会在getRandomName5()中的名称末尾添加额外的数字和文本。我需要代码将RED和RED1识别为相同的,并为输入_5找到一个与其他输入值不匹配的唯一值
如果getRandomName5()包含的值与其他值相等,但不相似,我可以让它工作
我可以将RED和RED1设置为一个值,以便它们看起来相等吗
谢谢你的帮助
编辑-我会尽量说得更具体一些
我正在填写一个HTML表格和几行代码,它们是“名称”。因此,由于代码/名称与数字一起列出,因此它们并不完全相同
<td>1</td><td>JIM</td><td>JOHNSON</td>
<td>5</td><td>JIM</td><td>JOHNSON</td>
例如:
我希望这两个随机选择的代码行被识别为相同的
<td>1</td><td>JIM</td><td>JOHNSON</td>
<td>5</td><td>JIM</td><td>JOHNSON</td>
1.
2.
3.
4.
5.
您要做的是遍历以前的输入,并从函数中的名称数组中删除任何包含值(color)
和(color)+“1”的内容。您也可以执行!arrayItem.includes(颜色)
如果您希望更全面
函数getRandomName1(){
变量名称=[“红色”、“绿色”、“蓝色”];
返回名称[Math.floor(Math.random()*names.length)];
}
函数getRandomName2(){
变量名称=[“黑色”、“白色”、“灰色”];
返回名称[Math.floor(Math.random()*names.length)];
}
函数getRandomName3(){
变量名称=[‘金’、‘银’、‘铜’];
返回名称[Math.floor(Math.random()*names.length)];
}
函数getRandomName4(){
变量名称=['洋红色','青色','黄色'];
返回名称[Math.floor(Math.random()*names.length)];
}
函数getRandomName5(){
变量名称=['RED1','GREEN1','BLUE1','BLACK1','WHITE1','GRAY1','GOLD1','SILVER1','BRONZE1','MAGENTA1','CYAN1','YELLOW1'];
//通过输入_1输入_4元素并获取其值
对于(变量i=1;i<5;i++){
颜色=document.getElementById(“输入”+i).value
//检查名称数组,如果它包含该颜色或带有
//1,然后将其从名称中删除
名称=名称.过滤器(c=>c!==color+“1”&&c!==color)
}
//现在移除颜色后,与上次输入相比,这是不安静的
返回名称[Math.floor(Math.random()*names.length)];
}
函数myFunction1(){
if(document.getElementById(“input_A”).value==“1”){
document.getElementById(“输入_1”).value=(getRandomName1());
document.getElementById(“input_2”).value=(getRandomName2());
document.getElementById(“input_3”).value=(getRandomName3());
document.getElementById(“input_4”).value=(getRandomName4());
document.getElementById(“input_5”).value=(getRandomName5());
}
}
1.
2.
3.
4.
5.
您的意思是,您不能更改getRandomName5
的实际代码?那么你也不能改变函数中包含的局部变量;然后,您唯一的选择可能是继续调用该函数,直到您得到一个尚未包含在任何其他输入字段中的值。它的复杂程度取决于您的相似条件。您需要确定。可以使用str.match()
我可以更改代码,我不能更改导入到代码中的名称@我不能创建我认为相似的名字列表吗?没有一个标准可以起作用,这只是我如何分组它们为什么要创建同一个函数5次?难道你不能创建一个getRandomName
函数并将名称作为参数传递吗?谢谢。它看起来不错,我会尽力让它和我需要的配合起来。我本应该更直接地处理我的问题,但我尽量不发表太多的评论code@JimB没问题,如果这回答了您的问题,您可以通过单击问题左侧的绿色复选标记来接受它。虽然你最初的问题对我来说已经足够清楚了,而且这个问题没有太多的代码。我想我现在的问题是,前4种颜色上也有额外的数字,所以我想我需要使用类似于5的代码删除这些数字?@JimB你可以做color=color.replace(/\d+$/g,”)
删除字符串末尾的所有额外数字,这样末尾的数字将被删除,它将只获得颜色名称。我无法使替换生效。这一切都结束了,过滤掉每个名字列表中不同/唯一的部分应该会起作用,因为它们会匹配