Вы можете конденсировать петли for
, используя Диапазон :
var result = Enumerable.Range(0, myList.Min(l => l.Count))
.Select(i => myList.Select(l => l[i]).ToList()).ToList();
Если targetForMath
не определено, это даст вам NaN
: Поскольку:
Math.random() * undefined -> NaN
Я бы удостоверился, что targetForMath является действительным числом.
Я не буду упоминать, что вы смешиваете var
и let
, кроме как сказать, что вы делаете это и должны быть осторожны с этим. Первый вопрос, который я хотел бы задать, это что такое typeof
userData[targetUser.id].money
и, более конкретно, каково его значение . Если это число, логическое значение, null
или пустой массив (?!), Он должен работать или, по крайней мере, не возвращать NaN. Однако, если это строка, неопределенное или любое другое значение, JavaScript не будет действительно знать, что вы имеете в виду, когда говорите, например, умножить Math.random()
раз "fish"
.
Обычно в этом случае хорошей идеей будет console.log
выяснить, что такое userData[targetUser.id]
, просто чтобы убедиться, что объект, от которого вы возвращаетесь, на самом деле является тем, чем вы думаете. Есть ли на самом деле свойство объекта userData
, определяемое идентификатором targetUser
?