【问题标题】:How to get minimum values with comparison in javascript如何在javascript中通过比较获得最小值
【发布时间】:2016-01-11 11:58:16
【问题描述】:

我想获取 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

谢谢...

【问题讨论】:

  • 显示一些具有实际数组结构的代码
  • for(var j=0;j
  • 这不是一个数组 - 如果是,你可以使用 .reduce 和一些代码
  • @JaromandaX ,我已经更新了问题......谢谢。
  • @JaromandaX 如果需要其他详细信息,请检查并告诉我......谢谢。

标签: javascript for-loop


【解决方案1】:

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

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 _
  }, [])

【讨论】:

  • 您能否根据我指定的条件更新您的答案。?谢谢
【解决方案2】:

完成:

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);
 }

【讨论】:

    【解决方案3】:

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

        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' ] 
    

    【讨论】:

    • 需要这个 //Prints -> [ '264||10', '265||18' ]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 2013-06-11
    • 1970-01-01
    • 2022-11-03
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多