从 jQuery 中的输入文本值中删除重复的逗号分隔数字



>我在网页上有一个输入,其值如下1,7,1,4,22,58,58,1,1,4,7

<input type="text" name="hello" id="thankyouforhelping" value="" aria-invalid="false">

我尝试了许多方法从中删除重复项,但没有一种方法有效。 我试过:jQuery函数从数组中获取所有唯一元素?和jQuery函数从数组中获取所有唯一元素?

我得到这样的值:

/* Grabbing up to date value to remove duplicates */
$upToDateValue = $('.wdrow-'+$projectrow+' .tasks-created input').val();

该值将始终是逗号分隔的数字,但是如何删除所有重复的数字。如果你愿意,我怎么能从低到高排序呢?

这样最终结果将是1,4,7,22,58

/* Removing duplicates */
$newValue = ???;

PS:我看到很多以前问过的问题的答案都是javascript,但我在jQuery中有我的代码,我正在努力将这些答案适应我的jQuery代码。因此,我很抱歉这个问题与已经可用的其他问题密切相关。像这样的问题:获取 JavaScript 数组中的所有唯一值(删除重复项( 我不知道如何将接受的答案适应我的代码。

感谢大家的帮助!

##Heretic_Monkey帮助了我很多,这就是结果:

$upToDateValue = $('.wdrow-'+$projectrow+' .tasks-created input').val();
/* Removing duplicates */
var values = $upToDateValue.split(','); values = [...new Set(values)]; values.sort(); $newValue = values.join(',');
/* Setting new value to input */
$('.wdrow-'+$projectrow+' .tasks-created input').val($newValue);

结合答案来自 如何将逗号分隔的字符串转换为数组?, 将 JavaScript 数组转换为逗号分隔列表的简单方法?,以及 获取 JavaScript 数组中的所有唯一值(删除重复项(,这是执行任务的一种方法:

// Get the value
var $upToDateValue = $('.wdrow-'+$projectrow+' .tasks-created input').val();
// Split into an array
var values = $upToDateValue.split(','); 
// Remove the duplicates and make a new array
values = [...new Set(values)]; 
// Sort the new array
values.sort(); 
// Create a new comma-delimited string from the array
var $newValue = values.join(',');
// Set the new value to input
$('.wdrow-'+$projectrow+' .tasks-created input').val($newValue);

所用代码的参考:

  • split
  • Set
  • ...又名"传播语法">
  • sort
  • join

我更新了代码,您可以复制函数并粘贴到您的代码中。

然后使用$newValue = unique(values)在代码中调用它

试试这个代码:

function unique (value) {
const valueList = value.split(",")
const unique = valueList.filter((item, index, valueList) => {
return index === valueList.indexOf(item);
});
const sorted = unique.sort(function(a, b) { return a - b; });

return sorted.join(',')
}

/* you can use it this way */
const value = "1,7,1,4,22,58,58,1,1,4,7"
$newValue = unique(value)
/* printing */
console.log($newValue)

最新更新