这是我的数组列表:
['<h3>Goalkeepers</h3><a href="#" data-id="44">Lewis Cardiff City £4.00</a>',
'<h3>Goalkeepers</h3><a href="#" data-id="42">Given Aston Villa £4.00</a>',
'<h3>Goalkeepers</h3><a href="#" data-id="36">Robles Everton £4.30</a>']
我想删除仅包含'<h3></h3>'
个标记的重复值。
我的期望是这样的:
['<h3>Goalkeepers</h3><a href="#" data-id="44">Lewis Cardiff City £4.00</a>',
'<a href="#" data-id="42">Given Aston Villa £4.00</a>',
'<a href="#" data-id="36">Robles Everton £4.30</a>']
尝试.reduce,.map,.filter方法来解决这个问题。但没有运气。 有人请帮帮我。
谢谢!
答案 0 :(得分:1)
快速回答:
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;
}
});
}
检查http://jsfiddle.net/WA8DE/。 你可以看到一个有趣的副作用(在浏览器的控制台中) - 代码将删除数组中的任何后续重复(“Shoplifters”)。
但请注意,这不是构建和处理数据的最佳方式。 让它像这样结构会更方便:
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.
};
这可以作为JSON从您的服务器检索,并且几乎直接在JSON.parse()
的帮助下使用。您还可以从任何其他数据生成此类结构。
然后,在必须在您的网页上呈现HTML时生成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 + " £" + item.bribe + "</a>";
}).join('');
}
return out;
}
dataToHTML(data); // -> HTML string
但是,这看起来几乎就像一个粗糙的模板,所以你可能需要更优雅的东西,比如下划线模板:http://underscorejs.org/#template。
使用数据编程,而不是字符串;)
答案 1 :(得分:0)
const arr = ["red","pink","pink","green","yellow","red","blue",];
console.log([...new Set(arr)]);