2017-08-13 5 views
1

Quelqu'un at-il une solution pour additionner ces valeurs de paires de clés pour une clé? J'ai essayé de les ajouter à la valeur de paire de clés en utilisant dict[id] += parseFloat(value) mais cela entraîne un fonctionnement incorrect. J'ai essayé d'utiliser eval(valuestring), je suis assez sûr que la valeur à l'intérieur de la clé est toujours une chaîne. Besoin d'obtenir la somme de chaque ID pour un classement.Javascript, somme des valeurs de paires de clés

Toute aide est très appréciée.

sortie des clés de dict_tips

'["U5WUV3A3G"]': '1000.0,200.0,300.0,100.0,500.0,420.0,42.0,98.0,500.0,150.0,300.0,300.0,25.0,200.0,', 
    '["U5FHMCWP7"]': '50.0,500.0,1000.0,45.0,1000.0,100.0,15.0,3.0,675.0,100.0,225.0,25.0,900.0,100.0,1000.0,10.0,30.0,0.001,0.005,1.755,1.724,1.5,', 
    '["U5SJQMME3"]': '100000.,100.0,100.0,100.0,50.0,100.0,100.0,40000.0,10.0,200.0,500.0,', 
    '["U6KAYAJ5Q"]': '100.0,200.0,900.0,100.0,100.0,100.0,1000.0,10.0,10.0,1000.0,100.0,100.0,1.0,10.0,800.0,200.0,100.0,190.0,190.0,10.0,10.0,', 
    '["U6F1AHQ8H"]': '10.0,100.0,', 
    '["U3H65TS9K"]': '500.0,100.0,200.0,500.0,35.414,12.345,', 
    '["U5HUZG3MF"]': '1.0,0.5,42.0,44.0,1.0,1.0,7.995,100.0,100.0,100.0,50.0,100.0,4.0,5.0,5.0,5.0,5.0,5.0,', 
    '["U5ZPTLXV5"]': '5.0,', 
    '["U6EMQC2LF"]': '737.998,2000.0,1000.0,300.0,666.0,6000.0,5000.0,5000.0,1000.0,5000.0,999.0,1.0,5000.0,3000.0,5000.0,9999.0,', 
    '["U62EVB2P7"]': '50.0,20.0,100.0,1.0,100.0,50.0,100.0,50.0,100.0,100.0,1.0,', 
    '["U3GJ9SREZ"]': '150.0,100.0,100.0,100.0,', 
    '["U6F0KBT2P"]': '1000.0,100.0,1000.0,100.0,800.0,100.0,100.0,', 
    '["U5WD17D5E"]': '150.0,75.0,', 
    '["U697Y6BL3"]': '5.0,1.0,51.0,2.0,1.0,1.0,5.0,', 
    '["U6GU038HX"]': '4000.0,', 
    '["U4B0NK2NR"]': '100.0,500.0,200.0,100.0,100.0,100.0,100.0,', 
    '["U6C23F8MT"]': '49.0,100.0,', 
    '["U5KQY01ST"]': '105.0,', 
    '["U6FSC0CC8"]': '100.0,100.0,', 
    '["U659939GF"]': '20.0,100.0,100.0,100.0,', 
    '["U5URNPRSA"]': '5.0,20.0,5.0,5.0,50.0,', 
    '["U5VAMV76F"]': '0.5,20.0,200.0,200.0,200.0,200.0,100.0,200.0,5.0,500.0,200.0,50.0,', 
    '["U5UL7KWKU"]': '150.0,200.0,', 
    '["U61NYHM25"]': '64.0,2.0,', 
    '["U6CMX965S"]': '10.0,10.0,20.0,50.0,30.0,', 
    '["U5G40R5PF"]': '499.0,', 
    '["U4XHS3DHA"]': '51.0,', 
    '["U69MY9WDS"]': '10.0,6.414,10.0,10.0,', 
    '["U666S65RC"]': '100.0,100.0,', 
    '["U5X3MEZ39"]': '1.0,1.0,10.01,10.1,0.002,0.01,1.1,' ] 

base

var dict_tips = []; 
    var dict_counts = []; 
    var sum = [] 
    for (var i = 0; i < 200 ; i++)           { 
    var str = res.messages.matches[i].text; 
    var stdout = capcon.captureStdout(function scope() { 
    for (var x = 46 ; x < 55 ; x++) { 
    process.stdout.write(str[x]); 
            } 
                }); 
    var id = JSON.stringify(stdout.match(/.{1,9}/g)) 
    var stdout = capcon.captureStdout(function scope() { 
    for (var x = 76 ; x < 85 ; x++) { 
    process.stdout.write(str[x]); 
            }      }); 
    var extract = JSON.stringify(stdout.match(/.{1,9}/g)); 
    var parse = extract.indexOf(/.RDD|RD|R|D|:| /g) 
    var x = checkAndAdd(id,extract) 
    function checkAndAdd(id,extract) { 
     var found = dict_tips.some(function (el) { 
     return el.key === id; }) 
if (!found) { if (parse = -1) 
       { 
       var format = (""+extract.slice(2,9)).replace(/.RDD|RD|R|D|:| /g,''); 
       var x = format.substr(0, 9) + " " + format.substr(9); 
       var total = x.split(" ")    
       dict_tips.push({key: id}) 
       dict_tips[id] += total 
       } 
       else 
       { 
       var format = extract.slice(2,9) 
       var x = format.substr(0, 9) + " " + format.substr(9) 
       var total = x.split(" ") 
       dict_tips.push({key: id}) 
       dict_tips[id] = ""; 
       dict_tips[id] += total 
       } 
     } 
     else 
     { 
       var extract = stdout.match(/.{1,9}/g); 
       var parse = extract.indexOf(/.RDD|RD|R|D|:| /g) 
       if (parse = -1) 
       { 
       var format = ("" + extract).replace(/.RDD|RD|R|D|:| /g,''); 
       var x = format.substr(0, 9) + " " + format.substr(9); 
       var total = x.split(" ") 
       dict_tips[id] += total 
       } 
       else 
       { 
       var format = extract.slice(1,9) 
       var x = format.substr(0, 9) + " " + format.substr(9); 
       var total = x.split(" ") 
       dict_tips[id] += total 
       }; 

     } 

} 

} 
var sum = dict_tips.reduce(function(a, b) { return a + b; }, 0); 
console.log(JSON.stringify(sum)) 
console.log(dict_tips) 

Répondre

0

En PHP, vous feriez une sur les virgules exploser, pensez javascript pour sa scission. Après avoir exécuté une boucle à travers chaque index du tableau que la fonction de partage vient de créer et ajouter à une somme totale. Vous devriez aussi faire un parsefloat sur chaque valeur de l'index.

1

diviser la chaîne, puis parseFloat et résumer les valeurs:

const data = { 
 
    '["U5WUV3A3G"]': '1000.0,200.0,300.0,100.0,500.0,420.0,42.0,98.0,500.0,150.0,300.0,300.0,25.0,200.0,', 
 
    '["U5FHMCWP7"]': '50.0,500.0,1000.0,45.0,1000.0,100.0,15.0,3.0,675.0,100.0,225.0,25.0,900.0,100.0,1000.0,10.0,30.0,0.001,0.005,1.755,1.724,1.5,', 
 
    '["U5SJQMME3"]': '100000.,100.0,100.0,100.0,50.0,100.0,100.0,40000.0,10.0,200.0,500.0,', 
 
    '["U6KAYAJ5Q"]': '100.0,200.0,900.0,100.0,100.0,100.0,1000.0,10.0,10.0,1000.0,100.0,100.0,1.0,10.0,800.0,200.0,100.0,190.0,190.0,10.0,10.0,', 
 
    '["U6F1AHQ8H"]': '10.0,100.0,', 
 
    '["U3H65TS9K"]': '500.0,100.0,200.0,500.0,35.414,12.345,', 
 
    '["U5HUZG3MF"]': '1.0,0.5,42.0,44.0,1.0,1.0,7.995,100.0,100.0,100.0,50.0,100.0,4.0,5.0,5.0,5.0,5.0,5.0,', 
 
    '["U5ZPTLXV5"]': '5.0,', 
 
    '["U6EMQC2LF"]': '737.998,2000.0,1000.0,300.0,666.0,6000.0,5000.0,5000.0,1000.0,5000.0,999.0,1.0,5000.0,3000.0,5000.0,9999.0,', 
 
    '["U62EVB2P7"]': '50.0,20.0,100.0,1.0,100.0,50.0,100.0,50.0,100.0,100.0,1.0,', 
 
    '["U3GJ9SREZ"]': '150.0,100.0,100.0,100.0,', 
 
    '["U6F0KBT2P"]': '1000.0,100.0,1000.0,100.0,800.0,100.0,100.0,', 
 
    '["U5WD17D5E"]': '150.0,75.0,', 
 
    '["U697Y6BL3"]': '5.0,1.0,51.0,2.0,1.0,1.0,5.0,', 
 
    '["U6GU038HX"]': '4000.0,', 
 
    '["U4B0NK2NR"]': '100.0,500.0,200.0,100.0,100.0,100.0,100.0,', 
 
    '["U6C23F8MT"]': '49.0,100.0,', 
 
    '["U5KQY01ST"]': '105.0,', 
 
    '["U6FSC0CC8"]': '100.0,100.0,', 
 
    '["U659939GF"]': '20.0,100.0,100.0,100.0,', 
 
    '["U5URNPRSA"]': '5.0,20.0,5.0,5.0,50.0,', 
 
    '["U5VAMV76F"]': '0.5,20.0,200.0,200.0,200.0,200.0,100.0,200.0,5.0,500.0,200.0,50.0,', 
 
    '["U5UL7KWKU"]': '150.0,200.0,', 
 
    '["U61NYHM25"]': '64.0,2.0,', 
 
    '["U6CMX965S"]': '10.0,10.0,20.0,50.0,30.0,', 
 
    '["U5G40R5PF"]': '499.0,', 
 
    '["U4XHS3DHA"]': '51.0,', 
 
    '["U69MY9WDS"]': '10.0,6.414,10.0,10.0,', 
 
    '["U666S65RC"]': '100.0,100.0,', 
 
    '["U5X3MEZ39"]': '1.0,1.0,10.01,10.1,0.002,0.01,1.1,' 
 
} 
 

 
const sums = Object.keys(data).reduce((results, key) => { 
 
    results[key] = data[key].split(',') 
 
    .map(item => parseFloat(item)) 
 
    .filter(item => !isNaN(item)) 
 
    .reduce((res, item) => res + item, 0) 
 

 
    return results 
 
}, {}) 
 

 
console.log(sums)

+0

Merci, je devais isoler mes valeurs KeyPair d'abord comme ils étaient en dict_tips. Le classement est en marche, merci pour votre aide, je l'apprécie. –

0

Vous pouvez simplement parcourir les clés des données à l'aide for in. Ensuite, vous devez split la chaîne dans un tableau, et résumer les valeurs en utilisant reduce.

const data = { 
 
    '["U5WUV3A3G"]': '1000.0,200.0,300.0,100.0,500.0,420.0,42.0,98.0,500.0,150.0,300.0,300.0,25.0,200.0,', 
 
    '["U5FHMCWP7"]': '50.0,500.0,1000.0,45.0,1000.0,100.0,15.0,3.0,675.0,100.0,225.0,25.0,900.0,100.0,1000.0,10.0,30.0,0.001,0.005,1.755,1.724,1.5,', 
 
    '["U5SJQMME3"]': '100000.,100.0,100.0,100.0,50.0,100.0,100.0,40000.0,10.0,200.0,500.0,', 
 
    '["U6KAYAJ5Q"]': '100.0,200.0,900.0,100.0,100.0,100.0,1000.0,10.0,10.0,1000.0,100.0,100.0,1.0,10.0,800.0,200.0,100.0,190.0,190.0,10.0,10.0,', 
 
    '["U6F1AHQ8H"]': '10.0,100.0,', 
 
    '["U3H65TS9K"]': '500.0,100.0,200.0,500.0,35.414,12.345,', 
 
    '["U5HUZG3MF"]': '1.0,0.5,42.0,44.0,1.0,1.0,7.995,100.0,100.0,100.0,50.0,100.0,4.0,5.0,5.0,5.0,5.0,5.0,', 
 
    '["U5ZPTLXV5"]': '5.0,', 
 
    '["U6EMQC2LF"]': '737.998,2000.0,1000.0,300.0,666.0,6000.0,5000.0,5000.0,1000.0,5000.0,999.0,1.0,5000.0,3000.0,5000.0,9999.0,', 
 
    '["U62EVB2P7"]': '50.0,20.0,100.0,1.0,100.0,50.0,100.0,50.0,100.0,100.0,1.0,', 
 
    '["U3GJ9SREZ"]': '150.0,100.0,100.0,100.0,', 
 
    '["U6F0KBT2P"]': '1000.0,100.0,1000.0,100.0,800.0,100.0,100.0,', 
 
    '["U5WD17D5E"]': '150.0,75.0,', 
 
    '["U697Y6BL3"]': '5.0,1.0,51.0,2.0,1.0,1.0,5.0,', 
 
    '["U6GU038HX"]': '4000.0,', 
 
    '["U4B0NK2NR"]': '100.0,500.0,200.0,100.0,100.0,100.0,100.0,', 
 
    '["U6C23F8MT"]': '49.0,100.0,', 
 
    '["U5KQY01ST"]': '105.0,', 
 
    '["U6FSC0CC8"]': '100.0,100.0,', 
 
    '["U659939GF"]': '20.0,100.0,100.0,100.0,', 
 
    '["U5URNPRSA"]': '5.0,20.0,5.0,5.0,50.0,', 
 
    '["U5VAMV76F"]': '0.5,20.0,200.0,200.0,200.0,200.0,100.0,200.0,5.0,500.0,200.0,50.0,', 
 
    '["U5UL7KWKU"]': '150.0,200.0,', 
 
    '["U61NYHM25"]': '64.0,2.0,', 
 
    '["U6CMX965S"]': '10.0,10.0,20.0,50.0,30.0,', 
 
    '["U5G40R5PF"]': '499.0,', 
 
    '["U4XHS3DHA"]': '51.0,', 
 
    '["U69MY9WDS"]': '10.0,6.414,10.0,10.0,', 
 
    '["U666S65RC"]': '100.0,100.0,', 
 
    '["U5X3MEZ39"]': '1.0,1.0,10.01,10.1,0.002,0.01,1.1,' 
 
} 
 

 
let sum = {}; 
 

 
for (var key in data) { 
 
    let arr = data[key].split(','); 
 
    let total = arr.reduce((acc, curr) => { 
 
    if (parseInt(curr)) { 
 
     return acc + parseInt(curr); 
 
    } 
 
    return acc; 
 
    }, 0); 
 
    sum[key] = total; 
 
} 
 

 
console.log(sum)