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)});
}
.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()
は、おそらくより効率的な方法です。
http://api.jquery.com/jQuery.inArray/
if ($.inArray('example', myArray) != -1)
{
// found it
}
jQueryにはinArray
関数があります。
if ($.inArray('yourElement', yourArray) > -1)
{
//yourElement in yourArray
//code here
}
リファレンス: Jquery Array
$ .inArray()メソッドは、一致するものが見つからない場合に-1を返すという点でJavaScriptのネイティブ.indexOf()メソッドに似ています。配列内の最初の要素が値と一致する場合、$。inArray()は0を返します。
jsfiddle link は同じコードを使用しています: http://jsfiddle.net/yrshaikh/SUKn2/
$ .inArray()メソッドは、一致するものが見つからない場合に-1を返すという点でJavaScriptのネイティブ.indexOf()メソッドに似ています。配列内の最初の要素が値と一致する場合、$。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>
出力:
[。またはインデックス2の後、-1