Javascript JS:从数组中的特定字符串中删除重复的值

Javascript JS:从数组中的特定字符串中删除重复的值,javascript,arrays,Javascript,Arrays,以下是我的数组列表: ['<h3>Goalkeepers</h3><a href="#" data-id="44">Lewis Cardiff City &pound;4.00</a>', '<h3>Goalkeepers</h3><a href="#" data-id="42">Given Aston Villa &pound;4.00</a>', '<h3>Goalke

以下是我的数组列表:

['<h3>Goalkeepers</h3><a href="#" data-id="44">Lewis Cardiff City &pound;4.00</a>',
'<h3>Goalkeepers</h3><a href="#" data-id="42">Given Aston Villa &pound;4.00</a>',
'<h3>Goalkeepers</h3><a href="#" data-id="36">Robles Everton &pound;4.30</a>']
[“守门员”,
“守门员”,
“守门员”]
我想删除只包含
''
标记之间的重复值

我的期望是这样的:

['<h3>Goalkeepers</h3><a href="#" data-id="44">Lewis Cardiff City &pound;4.00</a>',
'<a href="#" data-id="42">Given Aston Villa &pound;4.00</a>',
'<a href="#" data-id="36">Robles Everton &pound;4.30</a>']
    var data = {
        Goalkeepers: [
            {url: '#', id: 44, name: "Lewis Cardiff City", bribe: 4.00},
            {url: '#', id: 42, name: "Given Aston Villa", bribe: 4.00},
            {url: '#', id: 46, name: "Robles Everton", bribe: 4.00},
        ],
        Shoplifters: [
            // ...
        ],
        // etc.
    };
[“守门员”,
'',
'']
尝试了.reduce、.map、.filter方法来解决此问题。但是没有运气。 有人请帮帮我

谢谢

快速回答:

    function removeDuplicates(a) {
        var first = null;
        return a.map(function(item) {
            var h3 = item.match(/^<h3>([^<]+)<\/h3>/);
            if(first && first === h3[1]) return item.slice(h3[0].length);
            else {
                first = h3[1];
                return item;
            }
        });   
    }
这可以作为JSON从服务器检索,并在
JSON.parse()的帮助下直接使用。您还可以从任何其他数据生成这种结构

然后,在需要在网页上呈现时生成HTML。比如:

    function dataToHTML(d) {
        var out = "";
        for(var section in data) {
            if(!data.hasOwnProperty(section)) continue;
            out += "<h3>" + section + "</h3>";
            out += data[section].map(function(item){
                return "<a href=\"" + item.url + "\" data-id=\"" + item.id + "\">" + item.name + " &pound;" + item.bribe + "</a>";
            }).join('');
        }
        return out;
    }

    dataToHTML(data); // -> HTML string
函数dataToHTML(d){
var out=“”;
for(数据中的var部分){
如果(!data.hasOwnProperty(节))继续;
输出+=“”+节+“”;
out+=数据[节].map(函数(项){
返回“”;
}).加入(“”);
}
返回;
}
dataToHTML(数据);//->HTML字符串
但是,这看起来几乎像一个粗糙的模板,所以您可能需要一些更优雅的东西,比如下划线模板:

使用数据而不是字符串的程序;)

简单方法
const arr=[“红色”、“粉色”、“粉色”、“绿色”、“黄色”、“红色”、“蓝色”];

控制台日志([…新设置(arr)])
所以想要的
h3
总是在数组的第一个元素中?没错。将始终位于阵列的第一个元素中。但不是其他元素。您是如何尝试减少和映射的?给我们看看你的代码。谢谢你!nooga!。非常感谢您的最新代码,我有一个错误:uncaughttypeerror:Object#没有方法“map”,因为数据就是对象。不是数组?