如何在javascript中通过比较获得最小值

时间:2016-01-11 11:58:17

标签: javascript for-loop

我想获得JavaScript中组/唯一键的最小值

var allPriceData = $('#allPriceData').val();
//  alert (allPriceData);   
// Data 801||264||15:801||264||10:801||265||18:801||265||20:801||265||18        
var arr = allPriceData.split(':');

for(var j=0;j<arr.length;j++) {
    alert(arr[j]);
    var array = arr[j].split('||');

    for(var k=0;k<array.length;k++) {

    // Need Code Here for Required result:       
   }
 }

这是一个示例数组

264 || 15

264 || 10

265 || 18

265 || 20

265 || 22

必填答案:

264 || 10

265 || 18

感谢...

3 个答案:

答案 0 :(得分:0)

我对您的数据结构做了一些假设:

var data = [
  [264, 15],
  [264, 10], 
  [265, 18], 
  [265, 20], 
  [265, 22]
]
var tempDict = data.reduce(function (_, tuple) {
  var k = tuple[0], val = tuple[1]
  if (!_.hasOwnProperty(k)) _[k] = val
  else _[k] = Math.min(_[k], val)
  return _
  }, {})


var min = Object.keys(tempDict).reduce(function (_, k) {
  _.push([parseInt(k), tempDict[k]])
  return _
  }, [])

答案 1 :(得分:0)

完成:

var energy = '264||0||10:265||0||0:266||265||1614.99:269||0||0:270||269||0';
alert(energy);

var small = ["264||0||15","265||0||0","268||265||20.99"];
alert(small);

var min_array = energy.split(':');
var sum = 0;
for(var r=0;r<min_array.length;r++) {
    var min_values = min_array[r].split('||');

    var n = 'false';
    for(var j=0;j<small.length;j++) {
        //  alert(x[j]);
        var temp = small[j].split('||');
        if (temp[0] == min_values[0] && temp[1] == min_values[1])
        {
            sum = parseFloat(sum) + parseFloat(temp[2]);
            n = 'true';         
        } 
        else if (temp[1] != 0 && temp[1] == min_values[1])
        {
            sum = parseFloat(sum) + parseFloat(temp[2]);
            n = 'true';
        }
    }
    if (n == 'false')
    {
        sum = parseFloat(sum) + parseFloat(min_values[2]);
    }
    alert('sum '+sum);
 }

答案 2 :(得分:-1)

更新:只需添加小修改即可获得所需结果。

    var allKeys = ["264||15", "264||10", "265||18", "265||20", "265||22"];   


    allKeys.sort(function(i,j){
      var n = parseInt(i.split("||")[1]);
      var m = parseInt(j.split("||")[1]);
      return n > m;
    });

    var result = [];
    var obj = {};

    allKeys.forEach(function(ele){
      var n = ele.split("||")[0];
      if(obj[n] === undefined){
        obj[n] = true;
        result.push(ele);
      } 
    });

    console.log(result);
//Prints -> [ '264||10', '265||18' ]