javascript - JavaScript 哈希中的唯一值

标签 javascript jquery arrays prototype

仅当散列不包含我要添加的散列时,我才需要将散列插入数组中。 例如我有一个哈希数组:

var someArray = [
        {field_1 : "someValue_1", field_2 : "someValue_2"},
        {field_1 : "someValue_3", field_2 : "someValue_4"},
        {field_1 : "someValue_5", field_2 : "someValue_6"}
    ]

值(value)

{field_1 : "someValue_1", field_2 : "someValue_2"}

不应将其插入数组,因为它已经存在,但值

{field_1 : "someValue_7", field_2 : "someValue_8"}

应该,因为数组不包含这样的值。

有没有办法使用 jQuery 来做到这一点?

现在我只是使用 $.each 循环并检查数组是否包含一些哈希值。如果是的话我会触发一个标志。但我不喜欢这个解决方案。

最佳答案

  1. 创建自定义原型(prototype)来检查数组中是否存在对象。请查看下面的原型(prototype)设计。
Array.prototype.contains=function(x){
 for(i in this){
   if((x.field_1==this[i].field_1)&&(x.field_2==this[i].field_2))
     return true;  
 }
 return false;
}
  1. 使用上面的原型(prototype),您可以检查数组中是否存在对象。
 var someArray = [
        {field_1 : "someValue_1", field_2 : "someValue_2"},
        {field_1 : "someValue_3", field_2 : "someValue_4"},
        {field_1 : "someValue_5", field_2 : "someValue_6"}
    ];

var a1={field_1 : "someValue_1", field_2 : "someValue_2"};
var a2={field_1 : "someValue_7", field_2 : "someValue_8"};

if(!someArray.contains(a1))   someArray.push(obj);  // it will NOT BE pushed
if(!someArray.contains(a2))   someArray.push(obj); // it will be pushed

关于javascript - JavaScript 哈希中的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8976128/

相关文章:

javascript - 如何在数组中添加一个对象?

javascript - 如果屏幕宽度大于 1200px,禁用 setTimeout 函数?

javascript - 如何禁用某些 html 页面上的右键单击(但有一些异常(exception))

javascript - jQuery 获取具有特定类名的 SPAN 值

javascript - 适用于 DIV 的简单 jQuery 幻灯片

c# - 如何在 C# 中的 CharArray 中删除和添加元素?

javascript - 当您在已加载脚本标签或 jquery getScript 时调用它时,它是否会双重加载?

javascript - 使用扩展运算符替换集合的对象

javascript - IE9 的 AJAX 响应包含无效字符

PHP 数组在 foreach 上的转换不会通过引用传递变量