Расчет взвешенных значений в виде целых чисел для макета

Используйте инструкцию INSERT ... SELECT , в которой вы выбираете постоянные значения, а также данные из products_temp:

INSERT INTO products (product_data, vendor_id)
    SELECT data, '1' FROM products_temp

0
задан Sandy Gifford 4 March 2019 в 18:07
поделиться

1 ответ

Вот способ сделать это смутно, основываясь на этом ответе:

function weightedIntegerValues(weights, total) {
    let flooredValues = [];
    const weightSum = weights.reduce((sum, item) => {
        return sum + valueFunc(item);
    }, 0);

    let flooredSum = 0

    weights.forEach((weight, i) => {
        const weighted = total * weight / weightSum
        const floored = Math.floor(weighted);

        flooredValues.push({
            floored: floored,
            diff: weighted - floored,
            index: i
        });

        flooredSum = flooredSum + flooredValues[i].floored;
    });

    flooredValues = flooredValues.sort((a, b) => b.diff - a.diff);

    const difference = total - flooredSum;

    for (let i = 0; i < difference; i++) {
        flooredValues[i].floored += 1;
    }

    return flooredValues.sort((a, b) => a.index - b.index).map(v => v.floored);
}
0
ответ дан Sandy Gifford 4 March 2019 в 18:07
поделиться
Другие вопросы по тегам:

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