提问人:Shihan Chowdhury 提问时间:3/4/2023 更新时间:3/4/2023 访问量:53
我想对前 6 个元素进行排序,但它正在排序和显示所有元素
I want to sort first 6 element but it is sorting and displaying all element
问:
我使用参数在loadAllData(limit)函数中获取数据。并调用代码的函数末尾。在第一步中,我调用 loadAllData(6),以便它显示前 6 个元素,当显示更多按钮 clicekd 时,它调用没有参数的 loadAllData()。在displayAllData(data, limit)中,它检查是否有限制,然后将数组拆分为6或遍历data(array)。
const loadAllData = (limit) => {
const url = 'https://openapi.programming-hero.com/api/ai/tools';
fetch(url)
.then(res => res.json())
.then(data => displayAllData(data.data.tools, limit))
.catch(err => console.log(err))
}
const displayAllData = (data, limit) => {
const cardContainer = document.getElementById('cardContainer');
// cardContainer.innerText = '';
if(limit && data.length >=6) {
cardContainer.innerText = '';
document.getElementById('showMoreBtn').classList.remove('d-none');
data = data.slice(0, 6);
}
else {
cardContainer.innerText = '';
document.getElementById('showMoreBtn').classList.add('d-none');
}
for (const element of data) {
//It works fine
}
}
loadAllData(6);
document.getElementById('showMoreBtn').addEventListener('click', function() {
document.getElementById('loaderDiv').classList.add('d-block');
document.getElementById('showMoreBtn').classList.add('d-none');
loadAllData();
})
当调用“按日期排序”时,它将排序后的数据传递给 displayAllData(data)。现在的问题是,在单击“显示更多”按钮或展开所有数据后,“按日期排序”可以正常工作。但是当“按日期排序”点击时,有 6 个元素。它还显示了所有数据并进行了排序。
const sortFunction = (data) => {
data.sort(function (a, b) {
var c = new Date(a.published_in);
var d = new Date(b.published_in);
return d - c;
});
displayAllData(data);
}
请帮帮我。 提前致谢
我尝试对前(初始)6 个元素进行排序;但是当我单击“按日期排序”时,它会对所有数据进行排序并显示所有数据。
答:
0赞
katniss
3/4/2023
#1
using 就地对数组进行排序并改变原始数组。在对数据数组进行排序之前,您应该制作一个(浅层)副本。sort
const sortFunction = (data) => {
const copy = [...data]; // or data.slice(0)
copy.sort(function (a, b) {
var c = new Date(a.published_in);
var d = new Date(b.published_in);
return d - c;
});
displayAllData(copy);
};
评论
0赞
Shihan Chowdhury
3/4/2023
我的排序函数工作正常,但问题是当我尝试对 default(6) 元素进行排序时,它会对所有数据进行排序并显示。
评论
sortFunction