Javascript 当另一个元素以相同字母开头时,从字符串数组中删除元素

Javascript 当另一个元素以相同字母开头时,从字符串数组中删除元素,javascript,arrays,Javascript,Arrays,我有一个字符串数组,包含以字母、冒号和一些随机文本开头的元素。例如: a = [ "a:aushdad", "b:ofigjhld", "g:dkfgjdfg", "b:kjfdgkdfj" ] 我只想保留以b:开头的第一个元素,对于可能存在的任何其他重复项,都是相同的 最终结果应该是: a = [ "a:aushdad", "b:ofigjhld", "g:dkfgjdfg", ] 如何做到这一点?如果您需要更多信息,请告诉我。您可以

我有一个字符串数组,包含以字母、冒号和一些随机文本开头的元素。例如:

a = [
    "a:aushdad",
    "b:ofigjhld",
    "g:dkfgjdfg",
    "b:kjfdgkdfj"
]
我只想保留以
b:
开头的第一个元素,对于可能存在的任何其他重复项,都是相同的

最终结果应该是:

a = [
    "a:aushdad",
    "b:ofigjhld",
    "g:dkfgjdfg",
]
如何做到这一点?如果您需要更多信息,请告诉我。

您可以使用:

var a=[
“a:aushdad”,
“b:ofigjhld”,
“g:dkfgjdfg”,
“b:kjfdgkdfj”
]
var字母=[];
var结果=a.reduce(功能(上一个,当前){
if(字母.indexOf(当前[0])=-1){
字母推送(当前[0]);
上推(当前);
}
返回上一个;
}, []);
console.log(结果);//[“a:aushdad”、“b:ofigjhld”、“g:dkfgjdfg”]
您可以从数组中使用

//store already used 'key'
var map = {};

//regexp used to get the interesting part 
var regexp = /^.*?:/;

//function used for the filter, true add the value to the result array.
function myFilter(value){
    //get the key
    var key = regexp.exec(value)[0];

    //key not null and not used ?
    if(key && !map[key]){
        map[key] = true;
        return true;
    }
    else{
        return false;
    }
}

var result = myArray.filter(myFilter);

这很好用。比我尝试过的其他事情简单得多。非常感谢。很高兴为您服务。再仔细考虑一下,从语义上讲,使用过滤器而不是reduce可能更有意义,但基本思想将保持不变。这也很有效,但我选择Ray的答案是因为它更简单。但是谢谢你!