javascript - 按特定值快速排序函数数组
问题描述
完整代码在https://codepen.io/CodeLegend27/pen/ExPZRxa
确实阅读了类似的文章,但没有设法解决它
所以我的数组看起来像这样:
我有这个循环
for (let i = 0; i < ultraarr.length; i++) {
ultraarr.sort();
$(".row").append(ultraarr[i].display())
}
这调用了函数 display ,它是一个类函数,它基本上将数据插入到 html 中。 我想要它做什么:
我希望它按照日期升序排列。确实研究了ab的东西,但看不到我的解决方案
您的信息的类函数:
display() {
let content =
`
<div class="col-sm-12 col-md-6 col-lg-3">
<div class="card">
<img class="card-img-top d-sm-none d-md-block" src="img/${this.img}" alt="${this.name}">
<div class="card-body">
<h5 class="card-title">${this.name}</h5>
<p class="card-text">City: ${this.city} Zip-Code ${this.zip}
<br>
<label> Event Infos </label>
<ul>
<li>${this.edate}</li>
<li>${this.etime}</li>
<li>${this.eprice}</li>
<li>${this.eweb}</li>
</ul>
<p>Created: ${this.dates.toLocaleString('de-AT')}
</p>
</div></div>
</div>
` ;
return content;
}
顺便说一句,在将日期传递给他们这样创建的类构造函数之前:
new Date(2011, 1, 1, 3, 25),
当我控制台日志例如 typeof(newClassItem.dates) 它说对象而不是数字或字符串所以我真的不知道该怎么做 - 我想也许。的价值?
解决方案
保存日期时,使用日期对象上的 toJSON 方法保存它们。将排序函数传递给数组排序函数。
var array = [
{'name':'test1','date':'2020-06-19T14:21:31.633Z'},
{'name':'test2','date':'2020-07-30T12:22:53.113Z'},
]
function sortDate(rec1,rec2){
return new Date(rec1.date) < new Date(rec2.date) ? -1 : 1
}
array.sort(sortDate)
console.log(array)
这将按升序对数组进行排序。如果要按降序排序,请将比较符号更改为“>”或交换 -1 和 1。
如果数组内部将日期字段存储为日期数据类型,则可以执行以下操作
function sortDate(rec1,rec2){
return rec1.date < rec2.date ? -1 : 1
}
ultraarr.sort(sortDate)
推荐阅读
- javascript - 选择 2 下拉输入搜索在引导弹出模式中不起作用
- javascript - passport.js反序列化函数的反序列化函数中的getById()函数是什么?
- python - JINJA 循环不显示正确的变量 Python
- openstack - Devstack 和 Microstack 的区别
- swift - 如何从 ARKit 中的 simdTransform 中提取旋转值?
- javascript - 为什么我的 React 本机应用程序在安装 react navigation v5 后没有更新捆绑包中的修改代码?
- python - 使用python在条件下向textblurp添加新行(/ n)
- javascript - 我有一个关于该功能如何工作的问题
- javascript - 点击时的Javascript在iOS 14中不起作用
- javascript - 从后台在移动设备上打开 PWA 时的 Vue 事件