Vyhledávání na webu

Jak přidat chybějící hodnoty do dvou spojených polí? (JavaScript)


Mám dvě pole:

  1. category.data.xAxis // containing: ["0006", "0007", "0009", "0011", "0301"]
  2. category.data.yAxis // containing: [6.31412, 42.4245, 533.2234, 2345.5413, 3215.24]

Jak vezmu maximální délku, řekněme DATAPOINT_LENGTH_STANDARD=540, a doplním každý chybějící řetězec založený na číslech v poli xAxis? tak, aby:

  1. Výsledné pole xAxis bude číst od "0000" do "0540" (nebo jakákoli je standardní délka)
  2. Příslušné indexy osy y zůstanou propojeny s původními datovými body osy x (tj. „0006“ s 6,31412)
  3. Každý nově vytvořený datový bod na ose x má přiřazenou hodnotu 0 na ose y (takže nově vytvořená položka „0000“ na ose x bude obsahovat 0 na ose y na indexu 0 pro oba)

Řetězce hodnot osy x lze považovat za již seřazené od nejnižší po nejvyšší.

UPRAVIT

Jasnost mé otázky byla snahou pomoci komunitě najít přímočařejší odpověď, ale předpokládám, že přesnost působila jako domácí úkol. V reakci na komentáře je můj původní pokus, který správně nemanipuluje s osou x a neudržuje správné indexování:

let tempArray = categoryObject.data.xAxis;
let min = Math.min.apply(null, tempArray);
let max = Math.max.apply(null, tempArray);
while (min <= max) {
  if (tempArray.indexOf(min.toString()) === -1) {
      tempArray.push(min.toString());
      categoryObject.data.yAxis.push(0);
  }
  min++;
}
console.log(tempArray);
console.log(categoryObject.data.yAxis);

Odpověď č. 1

let xAxis = ["0006", "0007", "0009", "0011", "0301"]
let yAxis = [6.31412, 42.4245, 533.2234, 2345.5413, 3215.24]
const DATAPOINT_LENGTH_STANDARD = 540

// This assumes at least one data point
let paddedLength = xAxis[0].length
// Creates a new array whose first index is 0, last index is
// DATAPOINT_LENGTH_STANDARD, filled with 0s.
let yAxis_new = new Array(DATAPOINT_LENGTH_STANDARD + 1).fill(0)
// Copy each known data point into the new array at the given index.
// The + before x parses the zero-padded string into an actual number.
xAxis.forEach((x, i) => yAxis_new[+x] = yAxis[i])
// Replace the given array with the new array.
yAxis = yAxis_new
// Store the padded version of the index at each index.
for (let i = 0; i <= DATAPOINT_LENGTH_STANDARD; ++i) {
  xAxis[i] = ('' + i).padStart(paddedLength, '0')
}

console.log(xAxis)
console.log(yAxis)

Související články