我正在努力实现以下结果。 我有一个textarea,我想转换所有文本(按行)将在此textarea中输入数组。输入文本后,我想检查条目中是否有重复项。
为此,我: 1)从textarea创建一个数组(在下面命名为myarrayfromtextarea) 2)我创建了一个重复值的数组(下面名为checkArray) 3)我循环遍历第一个数组中的所有值,然后检查第二个数组中的匹配项。
理论上,它运作良好,但我尝试在textarea中输入以下值:
我希望只找到一个重复值(第3行和第4行),但令人难以置信的是,当我运行时 - > checkArray.indexOf(array [i])也是第1行显示匹配。
你能帮助我吗?
var myarrayfromtextarea = $('#My_textarea').val().split('\n'); // create array from textarea
console.log("array from textarea: " + myarrayfromtextarea)
var myArr = myarrayfromtextarea; /// here I start to find duplicates
var obj = {};
var checkArray = "["
myArr.forEach(function(item) {
if (typeof obj[item] == 'number') {
checkArray = checkArray + item + ",";
obj[item]++;
} else {
obj[item] = 1;
}
});
checkarraylenght = (checkArray.length - 1)
checkArray = checkArray.substring(0, checkarraylenght)
checkArray = checkArray + "]" + '';
console.log("checkarray = " + checkArray)
myarrayfromtextarea = myarrayfromtextarea + '';
var array = myarrayfromtextarea.split(',');
var arrayLength = array.length;
for (var i = 0; i < arrayLength; i++) {
if (checkArray.indexOf(array[i]) == -1) {
console.log("Not a duplicate: " + array[i]);
} else {
console.log("Duplicate value: " + array[i]);
}
//Do something
}
答案 0 :(得分:3)
//maybe something like
var inputLines = $('textarea').val().split('\n');
var lineValues = {};
inputLines.forEach(function(line, index){
if (!lineValues[line]) lineValues[line] = [];
lineValues[line].push(index + 1);
});
Object.keys(lineValues).forEach(function(line){
if (lineValues[line].length > 1) {
lineValues[line].forEach(function(value){
console.log(['Duplicate Value "', line, '":line:', value ].join(''));
});
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea>
dwdw
dwdwdwdwdwdwdwdw
dwdwdwdw
dwdwdwdw
dwdwdwdwdwdwdwdwdwdw
</textarea>
<div><button>TEST</button></div>
答案 1 :(得分:0)
使用jQuery快速而肮脏:
var names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];
var uniqueNames = [];
$.each(names, function(i, el){
if($.inArray(el, uniqueNames) === -1) uniqueNames.push(el);
});
答案 2 :(得分:0)
此代码返回所有重复的索引!
参考:find duplication in string,textarea's lines
var a= [], j= -1, obj = $('textarea').val().split('\n');
for(var i in obj){
j= -1;
while((j= obj.indexOf(obj[i],j+1)) < 1)
a.push(i);
}
console.log(a)
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea rows="4" cols="50">
ok
ok.
nok
ok
</textarea>
&#13;