Javascript ::验证包含键的数组中的重复(d)值

时间:2015-04-19 13:36:37

标签: javascript arrays string foreach key

在我解释我的目标之前,让我先从我的代码开始:

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/

所以基本上我的目标是保持当前代码的完全相同的功能,但同时我能够将键附加到我当前的数组。

我需要新鲜的大脑来看看这个:)

0 个答案:

没有答案