私は JSON が初めてで、JSON を使用してデータを保存しようとしています。ボタンをクリックすると、対応するボタンの値が JSON に保存されます。また、JSON に既に存在するタイトルと比較したいと考えています。
デモ Here
私は JSON が初めてで、JSON を使用してデータを保存しようとしています。ボタンをクリックすると、対応するボタンの値が JSON に保存されます。また、JSON に既に存在するタイトルと比較したいと考えています。
デモ Here
ループを使用してfor
、そのタイトルの要素が既に存在するかどうかを確認できます。
function alreadyAdded(itemTitle) {
for (var i = 0; i < objArray.length; i++) {
if (objArray[i].title === itemTitle) {
return true;
}
}
return false;
};
また、json オブジェクトを使用しておらず、JavaScript 配列のみを使用しています。
初め:
var jsonObj = []; //declare object
これは JSON ではありません。これは配列です。JSON は Javascript オブジェクトの単なる表記です。オブジェクトを宣言するには、次のことを行う必要があります。
var jsonObj = {};
また:
var jsonObj = new Object();
この後、これを行うことで、あなたが尋ねたことに近づくことができます:
var counter = 0;
var jsonObj = new Object();
$('.imgbtn').click(function () {
var title = $(this).parent().parent().find('span').html();
var image = $(this).parent().parent().find('img').prop('src');
if (!(title in jsonObj)) { // if item is not in the object, (title in jsonObj) returns true of false
jsonObj[title] = { // When you have hundreds of items, this approach is way faster then using FOR loop, and if you need to alter the item or get one value, you can just call it by name: jsonObj['ABC'].image will return the path of the image
id: counter,
image: image,
description: 'Example'
}
counter++;
$('#lblCart').html(counter);
} else {
// Do what you want if the item is already in the list
alert('Item already in the list');
console.log(jsonObj[title]);
}
});
やりたくないことをするために FOR ループを使用しないでください。カウンタが高くなると、アプリケーションの速度が低下するだけです。