如果元素在开头有一个共同的部分,如何从数组中删除?

时间:2016-12-27 06:40:57

标签: javascript arrays

让我们说我的数组看起来像这样:

something, something-ab, something-xy, something-xy-pq, apple, apple-banana, apple-something, potato, cat

我可以遍历所有元素并继续检查它们之后的所有元素的值,看看第一个值是否是子字符串,但我想知道是否有更聪明的方法将上面的数组转换为:

something, apple, potato, cat

感谢。

3 个答案:

答案 0 :(得分:1)

试试这个

new Set(array.map(word => word.split('-')[0]))

这是如何运作的?

  • 使用map创建新阵列
  • 对于每个单词,按-拆分并选择第一个元素
  • 使用Set删除重复项

答案 1 :(得分:0)

使用ES6,试试这个,

var array = ["something", "something-ab", "something-xy", "apple", "apple-banana", "apple-something", "potato", "cat"];


console.log([...new Set(array.map(x=> x.split('-')[1] || x.split('-')[0] ))])

答案 2 :(得分:0)

如果我正确理解了这个问题,你可以使用reduce这样做:

array.reduce(function(ans, v){
    if(!v.includes(ans[ans.length-1]))
        ans.push(v);
    return ans;
}, []);

如果值没有按照您的示例显示的方式进行排序,则可以sort之前进行排序。