2 回答
TA贡献1802条经验 获得超5个赞
您的问题不在于“排序”,而是您覆盖了 SortElements 对象中的键
SortElements[itemValue] = {'element': item, 'index': indx}
如果下一个商品具有相同的价格,那么您将使用新的 {element, index} 覆盖 SortElements[that Price];
我不想插入到一个对象中..插入到一个数组中
function myFunction() {
var items = document.querySelectorAll('.vc_visible-item');
var y = document.getElementsByClassName('vc_pageable-slide-wrapper');
var parent = y[0];
var SortElements = [];
items.forEach(function(item, indx){
var itemValue = parseFloat(item.querySelector('.price-product').textContent.replace('€', '').replace(/\s+/g, ''));
SortElements.push({'element': item, 'price':itemValue, 'index': indx});
});
function compareNumeric(a, b) {
numA = a.price;
numB = b.price;
if (numA < numB) return 1;
if (numA > numB) return -1;
return 0;
}
SortElements.sort(compareNumeric);
SortElements.forEach(function(item){
parent.insertAdjacentElement('beforeend', item.element);
});
}
TA贡献1788条经验 获得超4个赞
在循环中,您使用项目的值作为每个属性的名称在对象items.forEach
中创建成员。SortElements
如果循环发现具有该名称的成员已存在,它将用遇到的新值替换该属性的当前值。您可以在该行周围放置一个条件来检查该属性是否存在。
添加回答
举报