Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在JS中按价格对项目数组排序忽略具有相同价格的元素_Javascript - Fatal编程技术网

Javascript 在JS中按价格对项目数组排序忽略具有相同价格的元素

Javascript 在JS中按价格对项目数组排序忽略具有相同价格的元素,javascript,Javascript,我试图订购一个带有Javascript的产品列表,脚本运行良好,但是如果两个产品的价格相同,脚本只需忽略其中一个 function myFunction() {var items = document.querySelectorAll('.vc_visible-item'); var y = document.getElementsByClassName('vc_pageable-slide-wrapper'); var parent = y[0]; var SortElements = new

我试图订购一个带有Javascript的产品列表,脚本运行良好,但是如果两个产品的价格相同,脚本只需忽略其中一个

function myFunction() {var items = document.querySelectorAll('.vc_visible-item');
var y = document.getElementsByClassName('vc_pageable-slide-wrapper');
var parent = y[0];
var SortElements = new Object();
items.forEach(function(item, indx){
  var itemValue = parseFloat(item.querySelector('.price-product').textContent.replace('€', '').replace(/\s+/g, ''));
  SortElements[itemValue] = {'element': item, 'index': indx} ;
});
var keys = Object.keys(SortElements);
function compareNumeric(a, b) {
  a = parseInt(a);
  b = parseInt(b);

  if (a <= b) return 1;
  if (a >= b) return -1;
 
}
keys.sort(compareNumeric);
keys.map(function(key, indx){
  parent.insertAdjacentElement('beforeend', SortElements[key]['element']);
});
}
function myFunction(){var items=document.querySelectorAll('.vc_visible-item');
var y=document.getElementsByClassName('vc_pageable-slide-wrapper');
var parent=y[0];
var sorterelements=新对象();
items.forEach(功能(item,indx){
var itemValue=parseFloat(item.querySelector('.price product').textContent.replace('€','').replace(/\s+/g');
SortElements[itemValue]={'element':项,'index':indx};
});
var keys=Object.keys(分类元素);
函数比较(a,b){
a=parseInt(a);
b=parseInt(b);
如果(a=b)返回-1;
}
key.sort(compareNumeric);
键。映射(功能(键,indx){
parent.insertAdjacentElement('beforeend',sortedelements[key]['element']);
});
}
有人对我如何解决这个问题有什么建议吗?多谢各位

问题不是“排序”,而是覆盖SortElements对象中的键

SortElements[itemValue] = {'element': item, 'index': indx}
如果下一个项目具有相同的价格,那么您将使用新的{element,index}覆盖SortElements[该价格]

我宁愿不插入一个对象。。插入到数组中

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);
  });
}
函数myFunction(){
var items=document.querySelectorAll('.vc_visible-item');
var y=document.getElementsByClassName('vc_pageable-slide-wrapper');
var parent=y[0];
var元件=[];
items.forEach(功能(item,indx){
var itemValue=parseFloat(item.querySelector('.price product').textContent.replace('€','').replace(/\s+/g');
push({'element':item,'price':itemValue,'index':indx});
});
函数比较(a,b){
numA=a.价格;
numB=b.价格;
if(numAnumB)返回-1;
返回0;
}
SortElements.sort(compareNumeric);
分拣设备。forEach(功能(项目){
parent.insertAdjacentElement('beforeend',item.element);
});
}

items.forEach
循环中,您正在
SortElements
对象中使用项的值作为每个属性的名称创建成员。如果循环发现具有该名称的成员已存在,它将用遇到的新值替换该属性的当前值。
您可以在该行周围放置一个条件来检查该属性的存在。

如果不深入查看,我建议您在
compareNumeric
中的案例是错误的<代码>如果(ab)返回-1;/*else*/return 0。为什么不
return b-a
?已经尝试了这两种解决方案,但都不起作用:(对我来说不起作用:(似乎是tht-SortElements.push在SortElements中插入括号后阻止脚本的执行。push({element':item'price':itemValue,'index':indx});});非常有效,谢谢!)谢谢你的回复!你能帮我查一下密码吗?