在现有方法中复制的数组对象中添加过滤
Adding Filtering in an array objects duplicated in existing method
我有以下数组
[{ id: 1,
type: 'video',
image: null,
url: 'https://www.youtube.com/1'
},
{ id: 2,
type: 'video',
image: null,
url: 'https://www.youtube.com/2'
},
{ id: 3,
type: 'image',
image: 'https://example-1.url.webp'
},
{ id: 4,
type: 'image',
image: 'https://example-2.url.jpg',
},
{ id: 5,
type: 'video',
image: 'https://www.youtube.com/2',
}
]
我已经过滤了所有非 webp 格式且 image 为 null
[=15= 的项目]
const galleryFilter = gallery.filter(
(item) => item?.image?.indexOf("webp") === -1 || item?.image === null
);
如您所见,有 2 个 items
(id 2 和 id 5)具有相同的 url,如何在 galleryFilter
方法中过滤与相同 url 重复的项目?
你可以附加另一个过滤函数来按图像过滤url,(我已经在你的数据集中添加了另一个对象id: 6
)
var gallery = [{ id: 1,
type: 'video',
image: null,
url: 'https://www.youtube.com/1'
},
{ id: 2,
type: 'video',
image: null,
url: 'https://www.youtube.com/2'
},
{ id: 3,
type: 'image',
image: 'https://example-1.url.webp'
},
{ id: 4,
type: 'image',
image: 'https://example-2.url.jpg',
},
{ id: 5,
type: 'video',
image: 'https://www.youtube.com/2',
},
{ id: 6,
type: 'video',
image: 'https://www.youtube.com/2',
}
];
var galleryFilter = gallery.filter( (item) => item?.image?.indexOf("webp") === -1 || item?.image !== null ).filter((item, i, arr) => i == arr.findIndex(e => e.image == item.image));
console.log(galleryFilter);
使用 filter
并使用 Set
跟踪图像
const gallery = [
{ id: 1, type: "video", image: null, url: "https://www.youtube.com/1" },
{ id: 2, type: "video", image: null, url: "https://www.youtube.com/2" },
{ id: 3, type: "image", image: "https://example-1.url.webp" },
{ id: 4, type: "image", image: "https://example-2.url.jpg" },
{ id: 5, type: "video", image: "https://www.youtube.com/2" },
];
const set = new Set();
const galleryFilter = gallery.filter((item) => {
if (
(item?.image?.includes("webp") || item?.image === null) &&
!set.has(item?.image)
) {
set.add(item.image);
return true;
}
});
console.log(galleryFilter)
我有以下数组
[{ id: 1,
type: 'video',
image: null,
url: 'https://www.youtube.com/1'
},
{ id: 2,
type: 'video',
image: null,
url: 'https://www.youtube.com/2'
},
{ id: 3,
type: 'image',
image: 'https://example-1.url.webp'
},
{ id: 4,
type: 'image',
image: 'https://example-2.url.jpg',
},
{ id: 5,
type: 'video',
image: 'https://www.youtube.com/2',
}
]
我已经过滤了所有非 webp 格式且 image 为 null
[=15= 的项目]
const galleryFilter = gallery.filter(
(item) => item?.image?.indexOf("webp") === -1 || item?.image === null
);
如您所见,有 2 个 items
(id 2 和 id 5)具有相同的 url,如何在 galleryFilter
方法中过滤与相同 url 重复的项目?
你可以附加另一个过滤函数来按图像过滤url,(我已经在你的数据集中添加了另一个对象id: 6
)
var gallery = [{ id: 1,
type: 'video',
image: null,
url: 'https://www.youtube.com/1'
},
{ id: 2,
type: 'video',
image: null,
url: 'https://www.youtube.com/2'
},
{ id: 3,
type: 'image',
image: 'https://example-1.url.webp'
},
{ id: 4,
type: 'image',
image: 'https://example-2.url.jpg',
},
{ id: 5,
type: 'video',
image: 'https://www.youtube.com/2',
},
{ id: 6,
type: 'video',
image: 'https://www.youtube.com/2',
}
];
var galleryFilter = gallery.filter( (item) => item?.image?.indexOf("webp") === -1 || item?.image !== null ).filter((item, i, arr) => i == arr.findIndex(e => e.image == item.image));
console.log(galleryFilter);
使用 filter
并使用 Set
const gallery = [
{ id: 1, type: "video", image: null, url: "https://www.youtube.com/1" },
{ id: 2, type: "video", image: null, url: "https://www.youtube.com/2" },
{ id: 3, type: "image", image: "https://example-1.url.webp" },
{ id: 4, type: "image", image: "https://example-2.url.jpg" },
{ id: 5, type: "video", image: "https://www.youtube.com/2" },
];
const set = new Set();
const galleryFilter = gallery.filter((item) => {
if (
(item?.image?.includes("webp") || item?.image === null) &&
!set.has(item?.image)
) {
set.add(item.image);
return true;
}
});
console.log(galleryFilter)