我想获得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
感谢...
答案 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' ]