在我解释我的目标之前,让我先从我的代码开始:
var arr=['Hezi','Gangina','HeziGangina','Hezi-Gangina'];
function iUnique(v,i,s)
{
return s.indexOf(v)===i;
}
if(arr.length!==arr.filter(iUnique).length)
{
var arrayDup=
arr.filter(iUnique).filter
(
function(item,index)
{
return arr.indexOf(item)!==arr.lastIndexOf(item)
}
);
var dupVal=arrayDup.length;
throw new Error("Opps! Duplicate"+(dupVal>1?"d":"")+" value"+(dupVal>1?"s":"")+" : "+arrayDup);
}
arr.forEach(function(e)
{
document.writeln(e+"<br>");
});
arr=[];
现在,
直到这一刻,一切都完美无缺(无需触摸)......
BUT
我希望能够将密钥附加到当前数组。
数组键将被复制,因此没有理由验证数组键的重复值。
IOW ......我希望:
var arr=[A:'Hezi',A:'Gangina',A:'HeziGangina',B:'Hezi-Gangina']; // This would NOT throw a new error.
var arr=[A:'Hezi',A:'Gangina',A:'HeziGangina',B:'Hezi']; // This WOULD throw a new error.
这是JSFiddle(我将document.writeln更改为console.log):
http://jsfiddle.net/hezi_gangina/c9cvtk02/
所以基本上我的目标是保持当前代码的完全相同的功能,但同时我能够将键附加到我当前的数组。
我需要新鲜的大脑来看看这个:)