Jquery,检查数组中是不是存在值[重复]
Posted
技术标签:
【中文标题】Jquery,检查数组中是不是存在值[重复]【英文标题】:Jquery, checking if a value exists in array or not [duplicate]Jquery,检查数组中是否存在值[重复] 【发布时间】:2011-12-14 10:09:25 【问题描述】:我相信对于那些玩过 java script / jquery 的人来说这个问题会相当容易。
var arr = new Array();
$.map(arr, function()
if (this.id == productID)
this.price = productPrice;
else
arr.push(id: productID, price: productPrice)
我猜上面的代码以非常简单的方式解释了我想要的东西。我想这个 $.map 会像这样工作,但不幸的是我无法得到结果。
最简单、最优雅的方法是什么?我真的遍历所有数组只是为了查找键的值是否存在吗?
Jquery 有类似isset($array['key'])
的东西吗?
编辑
我尝试使用 inArray,但即使有匹配项,它也会不断将对象添加到数组中。
if ( $.inArray(productID, arr) > -1)
var number = $.inArray(productID, arr);
orderInfo[number].price = parseFloat(productPrice);
else
orderInfo.push(id:productID, price:parseFloat(productPrice));
【问题讨论】:
$.inArray()
在大多数情况下都不起作用。最好使用jQuery.inArray()
【参考方案1】:
http://api.jquery.com/jQuery.inArray/
if ($.inArray('example', myArray) != -1)
// found it
【讨论】:
太糟糕的社区投票不能在五年后导致被标记为正确答案。 :) 他们应该通过在 x 时间后查看赞成票来自己标记正确答案 其实$.inArray
执行的是===而不是==。所以如果你这样做$.inArray( "4", [1,2,3,4])
你会得到-1【参考方案2】:
jQuery 有inArray
函数:
http://api.jquery.com/jQuery.inArray/
【讨论】:
我尝试使用 inArray 但似乎我在某些时候做错了。它不断添加数据。 @Revenant,Here 就是一个例子。【参考方案3】: if ($.inArray('yourElement', yourArray) > -1)
//yourElement in yourArray
//code here
参考:Jquery Array
$.inArray() 方法类似于 javascript 的原生 .indexOf() 方法,因为它在找不到匹配项时返回 -1。如果数组中的第一个元素与值匹配,则 $.inArray() 返回 0。
【讨论】:
这就是我要找的,非常感谢酷酷的解决方案【参考方案4】:试试jQuery.inArray()
这是使用相同代码的jsfiddle link:http://jsfiddle.net/yrshaikh/SUKn2/
$.inArray() 方法类似于 JavaScript 的原生 .indexOf() 方法,因为它在找不到匹配项时返回 -1。如果数组中的第一个元素与值匹配,则 $.inArray() 返回 0
示例代码:
<html>
<head>
<style>
div color:blue;
span color:red;
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div>"John" found at <span></span></div>
<div>4 found at <span></span></div>
<div>"Karl" not found, so <span></span></div>
<div>
"Pete" is in the array, but not at or after index 2, so <span></span>
</div>
<script>
var arr = [ 4, "Pete", 8, "John" ];
var $spans = $("span");
$spans.eq(0).text(jQuery.inArray("John", arr));
$spans.eq(1).text(jQuery.inArray(4, arr));
$spans.eq(2).text(jQuery.inArray("Karl", arr));
$spans.eq(3).text(jQuery.inArray("Pete", arr, 2));
</script>
</body>
</html>
输出:
“约翰”发现于 3 4 发现于 0 没有找到“Karl”,所以 -1 “Pete”在数组中,但不在索引 2 处或之后,所以 -1【讨论】:
这个答案应该是被接受的。对于现在的未来,使用jQuery.inArray()
而不是$.inArray()
【参考方案5】:
如果您想使用.map()
进行操作,或者只是想知道它是如何工作的,您可以这样做:
var added=false;
$.map(arr, function(elementOfArray, indexInArray)
if (elementOfArray.id == productID)
elementOfArray.price = productPrice;
added = true;
if (!added)
arr.push(id: productID, price: productPrice)
该函数分别处理每个元素。其他答案中提出的.inArray()
可能是更有效的方法。
【讨论】:
只有 1 个额外信息;added = true
必须在条件内。以上是关于Jquery,检查数组中是不是存在值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
JQuery / Javascript:检查var是不是存在[重复]
需要更改此 JQuery 代码以在处理之前检查元素是不是存在 [重复]