按字母数量排序.检查以相同字母开头的单词.检查一个单词是否完全出现在另一个单词中.当两个单词以相同的字母开头时.如果它完全存在.只显示第一个单词而忽略第二个单词字
var arraylist = ["running", "walking", "standing", "writing", "waiting", "sleeping", "reading", "washing", "sitting", "riding", "shopping", "singing", "painting", "watching", "swimming", "pulling", "smoking", "pushing", "drinking", "dancing", "cooking", "crying ", "eating", "smiling","run", "walk", "push", "cook", "cry", "eat"];
使用javascript / jquery期望输出:
我需要删除这些词:跑步,走路,推,做饭,哭,吃.
var arrayList = ["run", "walk", "standing", "writing", "waiting", "sleeping", "reading", "washing", "sitting", "riding", "shopping", "singing", "painting", "watching", "swimming", "pulling", "smoking", "push", "drinking", "dancing", "cook", "cry", "eat", "smiling","run", "walk", "push", "cook", "cry", "eat"];
解决方法:
对于@Grimbode提到的案例
来自OP
Check if a word is completely present in another word
所以笑容并不完全呈现在微笑中
所以这个解决方案可能会有所帮
function filter(arr) {
arr.sort(function(a, b) {
return a.length - b.length;
})
return arr.reduce(function(acc, el) {
if (!acc.some(function(e) {
return el.startsWith(e);
})) {
acc.push(el);
}
return acc;
}, []);
}
if (!String.prototype.startsWith) {
String.prototype.startsWith = function(searchString, position) {
position = position || 0;
return this.lastIndexOf(searchString, position) === position;
};
}
if (!String.prototype.startsWith) {
String.prototype.startsWith = function(searchString, position) {
position = position || 0;
return this.lastIndexOf(searchString, position) === position;
};
}
var arraylist = ["running", "walking", "standing", "writing", "waiting", "sleeping", "reading", "washing", "sitting", "riding", "shopping", "singing", "painting", "watching", "swimming", "pulling", "smoking", "pushing", "drinking", "dancing", "cooking", "crying ", "eating", "smiling", "run", "walk", "push", "cook", "cry", "eat"];
function filter(arr) {
arr.sort(function(a, b) {
return a.length - b.length;
})
return arr.reduce(function(acc, el) {
if (!acc.some(function(e) {
return el.startsWith(e);
})) {
acc.push(el);
}
return acc;
}, []);
}
document.getElementById('before').innerHTML = JSON.stringify(arraylist);
document.getElementById('result').innerHTML = JSON.stringify(filter(arraylist));
<div><span>initial array:</span><span id="before"></span>
<div>
<div><span>result array:</span><span id="result"></span>
<div>