【发布时间】:2017-11-24 09:46:48
【问题描述】:
这是我的第一个问题。我有一个代码,我试图将一个对象添加到本地存储中的数组中。如果它已经存在,我检查它并想要停止循环。但是,这只发生在循环为空时创建的第一个元素上。请你看看我的代码,看看我做错了什么。我试过了:
- for 循环
- 一些
- 为每个
函数中的参数是从其他函数中获取变量,我使用 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++;
}
});
}
}
【问题讨论】: