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的答案是因为它更简单。但是谢谢你!