我相信这个问题对于那些玩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)});
}
答案 0 :(得分:214)
http://api.jquery.com/jQuery.inArray/
if ($.inArray('example', myArray) != -1)
{
// found it
}
答案 1 :(得分:21)
如果你想使用.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()
可能是更有效的方法。
答案 2 :(得分:19)
jQuery具有inArray
函数:
答案 3 :(得分:15)
if ($.inArray('yourElement', yourArray) > -1)
{
//yourElement in yourArray
//code here
}
参考:Jquery Array
$ .inArray()方法类似于JavaScript的原生.indexOf()方法,因为它在找不到匹配项时返回-1。如果数组中的第一个元素与value匹配,则$ .inArray()返回0.
答案 4 :(得分:7)
以下是使用相同代码的jsfiddle link:http://jsfiddle.net/yrshaikh/SUKn2/
$ .inArray()方法类似于JavaScript的原生.indexOf()方法,因为它在找不到匹配项时返回-1。如果数组中的第一个元素与value匹配,则$ .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>
输出:
"John" found at 3 4 found at 0 "Karl" not found, so -1 "Pete" is in the array, but not at or after index 2, so -1