1

私は JSON が初めてで、JSON を使用してデータを保存しようとしています。ボタンをクリックすると、対応するボタンの値が JSON に保存されます。また、JSON に既に存在するタイトルと比較したいと考えています。

デモ Here

4

4 に答える 4

1

ループを使用してfor、そのタイトルの要素が既に存在するかどうかを確認できます。

function alreadyAdded(itemTitle) {
    for (var i = 0; i < objArray.length; i++) {
        if (objArray[i].title === itemTitle) {
            return true;
        }
    }
    return false;
};

また、json オブジェクトを使用しておらず、JavaScript 配列のみを使用しています。

デモ

于 2013-09-03T05:38:40.037 に答える
0

初め:

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 ループを使用しないでください。カウンタが高くなると、アプリケーションの速度が低下するだけです。

于 2013-09-03T05:48:53.983 に答える