JS | Запишите через вложенный & ldquo; for of & rdquo; петля

Функция:

public float simpleSimilarity(String u, String v) {
    String[] a = u.split(" ");
    String[] b = v.split(" ");

    long correct = 0;
    int minLen = Math.min(a.length, b.length);

    for (int i = 0; i < minLen; i++) {
        String aa = a[i];
        String bb = b[i];
        int minWordLength = Math.min(aa.length(), bb.length());

        for (int j = 0; j < minWordLength; j++) {
            if (aa.charAt(j) == bb.charAt(j)) {
                correct++;
            }
        }
    }

    return (float) (((double) correct) / Math.max(u.length(), v.length()));
}

Тест:

String a = "This is the first string.";

String b = "this is not 1st string!";

// for exact string comparison, use .equals

boolean exact = a.equals(b);

// For similarity check, there are libraries for this
// Here I'll try a simple example I wrote

float similarity = simple_similarity(a,b);
0
задан Jonca33 10 March 2019 в 17:36
поделиться

2 ответа

Во-первых, всегда передавайте массивы, методы обычно не должны выполнять такую ​​проверку ввода в JavaScript. Также не добавляйте calculateStatsForMetric, если у вас есть код для выброса, оберните его в try / catch и верните значение Falsey.

Теперь вы можете использовать методы массива более высокого порядка, такие как flatMap и map :

  • Взять каждую метрику
      [1116 ] Для каждой метрики
    • Возьмите каждую статистику (для этого требуется плоская карта на карте)
    • Вычислите функцию по ней
    • Сохраните истинные значения (это требует фильтра)

Или в коде:

export const refactored = (measure, metrics, stats) => 
  metrics.flatMap(metric => stats.map(stat => ({
    metric,
    stat,
    value: calculateStatsForMetric(stat, metric, measure)
  }))).filter(o => o.value);
0
ответ дан Benjamin Gruenbaum 10 March 2019 в 17:36
поделиться

Простой подход заключается в использовании forEach -

let statistics = [];
metrics.forEach(m => {
  stats.forEach(s => {
    let value = calculateStatsForMetric(s, m, measures);
    if (value) {
      statistics.push({
        metric: m,
        stat: s,
        value: value
      });
    }
  });
});
0
ответ дан ra89fi 10 March 2019 в 17:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: