typescript - Blandad matris av sträng och nummer


Jag har en array som består av en sträng och ett nummer ("2",3,4). Jag vill multiplicera samma och få ett resultat på 24.

Jag försökte denna metod men fick ett felmeddelande: "Argument av typen 'string | number' kan inte tilldelas parametern av typen 'string'. Typen 'number' kan inte tilldelas typen 'string'."

var stringArray = ["2",3,4];
var numberArray = [];

length = stringArray.length;

for (var i = 0; i < length; i++)
  numberArray.push(parseInt(stringArray[i]));
console.log(numberArray);

Svar #1

parseInt förväntar sig ett argument av typen string. Eftersom din array också innehåller siffror, anropar du den dock med en number, t.ex. parseInt(3), vilket är anledningen till att du får felet.

En möjlig lösning är att kontrollera manuellt och ge en ledtråd

var stringArray = ["2",3,4];
var numberArray = [];

length = stringArray.length;

for (var i = 0; i < length; i++) {
  let value;
  if (typeof stringArray[i] === 'string') {
     value = parseInt(stringArray[i] as string)
  } else {
     value = stringArray[i]
  }
  numberArray.push(value);
}
console.log(numberArray);

Svar #2

Eftersom du vill multiplicera.
var stringArray=["2",3,4]; let res=stringArray.reduce((a,b) => a*b); kommer Reduce-metoden att göra omvandlingen åt dig.