javascript включает функцию в фильтре функция не работает? - PullRequest
0 голосов
/ 04 августа 2020

У меня проблема с функцией фильтра javascript.
Это мое представление о том, как она должна работать.

  1. Мне нужно проверить, есть ли объект в массиве fetchedImage ( сначала все изображения не находятся в массиве, потому что массив пуст).
  2. поэтому мы помещаем sh все новые изображения (не в массив fetchedImage) в массив очереди.
  3. второй раз, когда мы проверяем, находятся ли объекты в массиве, они будут в массиве, поэтому в массиве очереди нет изображений go.

результаты моего кода показывают, что очередь продолжает расти без добавления новых изображений.
мой код:

let images = res.items;
if(images)
{
    // should return items that are not in the array
    let newImages = images.filter(image => {
        return fetchedImages.includes(image) == false; // ps: (image is object)
    })
                
    // add all new images into the queue array
    queue = [].concat(queue, newImages);
}

(Возможно, я сделал что-то не так в функции фильтра, но не могу это исправить)

Ответы [ 3 ]

1 голос
/ 04 августа 2020

В JavaScript нельзя безопасно сравнивать два объекта. Либо используйте уникальное свойство объектов изображения для сравнения, либо посмотрите этот пост SO для других решений: Сравнение объектов в JavaScript

0 голосов
/ 04 августа 2020
$(document).ready(function(){

var images = {
"data":[
  {"name":"halil", "image":"halil.png"},
  {"name":"bertan", "image":"bertan.png"},
  {"name":"cakici", "image":"cakici.png"}
]
}

var fetchedImages = {
"data":[
  {"name":"bertan", "image":"bertan.png"},
  {"name":"cakici", "image":"cakici.png"}
]
}

var queue = [];

if(images)
{
        $.each(images.data,function(key,value){
        var found = fetchedImages.data.filter(d => d.image == value.image);
      if(found.length > 0){
            queue.push(found);
      }
    })
}
    console.log(queue);
});

Работаем на: https://jsfiddle.net/j9pdat7e/1/

0 голосов
/ 04 августа 2020

если у кого такая же проблема. Я нашел рабочее решение с этим кодом c:

let newImages = images.filter(image => {
    return fetchedImages.find(fetchedImage => fetchedImage.name == image.name) == undefined
})  

просто используйте метод поиска

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...