得到字符串,需要从那里删除相同的单词。
这是我的代码。我试图将字符串拆分为数组然后排序但它不起作用。它甚至没有通过我的if
。我想听听你的意见和工作代码:)
var str = "I wont go anywhere as soon as I wont go there";
var array = str.split(" ");
document.getElementsByTagName('p')[0].innerHTML = str;
document.getElementsByTagName('p')[1].innerHTML = array;
document.getElementsByTagName('button')[0].onclick = function () {
for (var i = 0; i < array.length; i++) {
if (array[i] == array[i + 1]) {
array.splice(i, 1);
}
}
document.getElementsByTagName('p')[2].innerHTML = array;
}
答案 0 :(得分:1)
如果你喜欢单行试试这个
var reducedString = array.reduce(function(out, s) {
return out.indexOf(s) == -1 ? out + ' ' + s : out;
},'').substring(1);
或在ES6中
var reducedString = array.reduce( (out, s) => out.indexOf(s) == -1 ? out + ' ' + s : out);
答案 1 :(得分:0)
分割完遗产后,您可以使用带有扩展语法的ES6 Set:
const str = "I wont go anywhere as soon as I wont go there";
const unique = [...new Set(str.split(' '))].join(' ');
console.log(unique);
在ES5中,您可以将Array#reduce与字典对象一起使用。
var str = "I wont go anywhere as soon as I wont go there";
var dict = Object.create(null); // creates an empty object, without inherited properties and methods
var unique = str.split(' ').reduce(function(arr, w) {
if(!dict[w]) {
arr.push(w);
dict[w] = true;
}
return arr;
}, []).join(' ');
console.log(unique);
答案 2 :(得分:0)
您只需替换您要搜索的子字符串
即可var ret = "data-123".replace('data-','');
console.log(ret);
答案 3 :(得分:0)
您的问题是您不会检查每个数组元素与其他每个数组元素。
您的代码:
for (var i = 0; i < array.length; i++) {
if (array[i] == array[i + 1]) {
array.splice(i, 1);
}
}
只是按顺序检查数组元素。
尝试:
for (var i = 0; i < array.length; i++) {
for(var j = 0; j < array.length; j++){
if (array[i] == array[j] && i != j) {
array.splice(i, 1);
}
}
}