2017-08-11 1 views
1

J'ai un tableau de six citations et j'essaie de trouver la longueur moyenne de chaque citation. Je pense que je dois créer un nouveau tableau des longueurs de chaîne, puis moyenne. Mais je ne peux pas comprendre comment obtenir les comptes du tableau original dans le nouveau tableau. Comment puis-je obtenir les comptes du premier tableau dans le nouveau tableau?Recherche de la longueur moyenne des chaînes dans la matrice - Javascript

+1

Pourriez-vous inclure votre tableau avec des guillemets. –

Répondre

2

arr = [1, 12, 123, 1234]     // works with numbers too 
 
avg = arr.join('').length/arr.length  // 10/4 = 2.5 
 
console.log(avg)

+0

les chaînes sont jointes avec ',' par défaut. vous devez utiliser 'join ('')' – madox2

+1

merci @ madox2 mes maths sont terribles .. – Slai

+0

Ça l'a fait! Je vous remercie. –

0

Vous pouvez utiliser Array.prototype.reduce pour résumer la longueur totale de toutes les citations et les diviser par la longueur/taille du tableau de citations:

const quotes = [ 
    "Quote #1", 
    "Longer quote", 
    "Something...", 
    ... 
]; 

// Sum up all the quotes lengths 
const totalQuotesLength = quotes.reduce(function (sum, quote) { 
    return sum + quote.length; 
}, 0); 

// Calculate avg length of the quotes 
const avgQuoteLength = (
    totalQuotesLength/quotes.length 
); 
0

Si je comprends bien, vous voulez trouver la longueur moyenne de chaînes dans un tableau, vous pouvez le faire comme ceci:

var total = 0; 
for(var i = 0; i < array.length; i++){ 
    total+=array[i].length; 
} 
var average = total/array.length; 
2

vous pouvez reduce votre tableau de chaînes. Par exemple:

['a', 'bb', 'ccc', 'dddd'] 
    .reduce((a, b, i, arr) => a + b.length/arr.length, 0) 
+0

le '/ arr.length' doit être après la réduction pour résultat correct – Slai

+0

@Slai il calcule en moyenne partiellement, le résultat est correct – madox2

+0

vous avez raison, mon résultat était erroné. +1 et merci encore – Slai

0

Vous pouvez simplement utiliser aussi .reduce avec quelque chose comme:

const numbers = [1,2,3,4,5,6]; 
const total = numbers.reduce((acc, value) => acc + value, 0); 
const average = total/numbers.length; 

Je Hoe il vous aidera!

0

Vous pouvez utiliser forEach sur chaque élément sans créer de nouveaux tableaux. Peut être longue mais lisible:

https://jsfiddle.net/p19qbodw/ - tourner ceci dans une console ouverte pour voir le résultat

var quotes = ["quotequote", "quote", "qu"] 
charsSum = 0, 
avarage; 

quotes.forEach((el) => { 
charsSum += el.length; 
}); 

avarage = charsSum/quotes.length; 
0

Joignez toutes les valeurs de tableau à une seule chaîne et vous pouvez calculer la longueur moyenne.

var yourArray = ["test", "tes", "test"], 
    arrayLength = yourArray.length, 
    joined = yourArray.join(''), 
    result = joined.length/arrayLength; 

console.log(result);