これは私の最初の質問です。私はローカルストレージ内の配列にオブジェクトを追加しようとしているコードがあります。既に存在する場合は、チェックしてループを停止します。ただし、ループが空のときに作成される最初の要素でのみ発生します。私のコードを見て、私が間違っていることを見てください。オブジェクトの配列をループしても文が返されないif文
- ループ
- 一部
- forEachの機能では、引数が他の関数から変数を取得するためにある
のために、私はいくつかのデータをフェッチするためにAJAXを使用しています:私は試してみました。私はforEachがreturn文を受け入れないことを知っています。そのため、コードはコメントアウトされています。事前 コードで
ありがとう:あなたは一致が見つかっており、ループはを停止したいとき
var counter = 0;
function bookmarkNewsSource(that, x, data, newsName) {
myBookmark = {
count: counter,
imgNum: x,
id: data.sources[x].id,
name: data.sources[x].name
};
// check if fullTask already exists
if (localStorage.getItem("bookmarks") === null) {
//if not init array
var bookmarks = [];
//add to an array
bookmarks.push(myBookmark);
counter++;
//set localstorage and convert object to a string
localStorage.setItem("bookmarks", JSON.stringify(bookmarks));
} else {
var bookmarks = JSON.parse(localStorage.getItem("bookmarks"));
// bookmarks.forEach((bookmark, index, array) => {
// console.log(bookmark, index);
// if (newsName == bookmark.name) {
// return 'done';
// } else {
// bookmarks.push(myBookmark);
// localStorage.setItem("bookmarks", JSON.stringify(bookmarks));
// counter++;
// }
// });
bookmarks.some((bookmark) => {
if (newsName == bookmark.name) {
console.log('yes', newsName);
return false;
} else {
JSON.parse(localStorage.getItem("bookmarks"));
bookmarks.push(myBookmark);
localStorage.setItem("bookmarks", JSON.stringify(bookmarks));
counter++;
}
});
}
}
は、あなたの答えをありがとう返します。これは、配列内の最初の要素(オブジェクト)に対してのみ正しく実行されます。それは一度しか追加しません。しかし、私が追加しようとすると、それらの多くは失敗し、それを続けます。私はまた、インデックスをチェックし、正しくiteratesとifステートメントからコードをログに記録しますが、それでもelseステートメントに続きます。 Sthは間違っているはずです。 – AndrewB
ああ、あなたのコードをよく見てみると、問題は 'some()'の中の 'else'によると思われますが、私はこれも含めて更新しました。 – Ankit
優秀、それは働いた!私はさまざまな方法で試しましたが、私は正しい答えから遠く離れていないと思います。正しい場所にコードを配置するだけの問題:Dありがとう! – AndrewB