Javascript:array.push()只推送for循环中源数组的最后一个字符串



我在下面的脚本中遇到的问题是,我在oCollectedValue数组中获得了完美的值,但由于某种原因,oCreatedOn只得到了推送到它的1个字符串,这是CreatedOn数组上的最后一个字符串。我一辈子都看不出这个代码出了什么问题。请帮忙。谢谢

Route = "";
var UpperCoherenceLimit = 9.99;
var LowerCoherenceLimit = 4.98;
var CollectedValue = ["1.7865","3.7865","4.786532564000","5.7865","6.7865","7.7865"];
var CreatedOn = ["7/1/2018 12:00:00 AM","7/2/2018 12:00:00 AM","7/3/2018 12:00:00 AM","7/4/2018 12:00:00 AM","7/5/2018 12:00:00 AM","7/7/2018 12:00:00 AM"];
var SkippedValueList = [];
var oCollectedValue = [];
var oCreatedOn = [];
var DisableCoherenceError = true;
for (var i = 0; i < CollectedValue.length; i++)
{
if(CollectedValue[i] > UpperCoherenceLimit || CollectedValue[i] < LowerCoherenceLimit)
{
if(UpperCoherenceLimit != LowerCoherenceLimit)
{
if(DisableCoherenceError == false)
{
SkippedValueList.push(CollectedValue[i])
}
else
{
SkippedValueList.push(CollectedValue[i])
}
}
}
else
{
oCollectedValue.push(CollectedValue[i])
oCreatedOn.push(CreatedOn[i])
}
}
if (oCollectedValue.length == 0)
{
Route = 'SKIP';
}

仅仅正确地分离数组项似乎就能解决问题?当比较数字和字符串时,Javascript会自动为您进行类型转换,但您也应该考虑将字符串解析为浮点值。

var UpperCoherenceLimit = 9.99;
var LowerCoherenceLimit = 4.98;
var CollectedValue = ["1.7865", "3.7865", "4.786532564000", "5.7865", "6.7865", "7.7865"];
var CreatedOn = ["7/1/2018 12:00:00 AM", "7/2/2018 12:00:00 AM", "7/3/2018 12:00:00 AM", "7/4/2018 12:00:00 AM", "7/5/2018 12:00:00 AM", "7/7/2018 12:00:00 AM"];
var SkippedValueList = [];
var oCollectedValue = [];
var oCreatedOn = [];
var DisableCoherenceError = true;
for (var i = 0; i < CollectedValue.length; i++)
{
if(CollectedValue[i] > UpperCoherenceLimit || CollectedValue[i] < LowerCoherenceLimit)
{
if(UpperCoherenceLimit != LowerCoherenceLimit)
{
SkippedValueList.push(CollectedValue[i])
}
}
else
{
oCollectedValue.push(CollectedValue[i])
oCreatedOn.push(CreatedOn[i])
}
}

console.log(oCollectedValue);
console.log(oCreatedOn);

以下测试通过:

require('chai').should();
describe('Arrays', () => {
it('needs commas', () => {
Route = "";
var UpperCoherenceLimit = 9.99;
var LowerCoherenceLimit = 4.98;
var CollectedValue = ["1.7865", "3.7865", "4.786532564000", "5.7865", "6.7865", "7.7865"];
var CreatedOn = ["7/1/2018 12:00:00 AM", "7/2/2018 12:00:00 AM", "7/3/2018 12:00:00 AM", "7/4/2018 12:00:00 AM", "7/5/2018 12:00:00 AM", "7/7/2018 12:00:00 AM"];
var SkippedValueList = [];
var oCollectedValue = [];
var oCreatedOn = [];
var DisableCoherenceError = true;
for (var i = 0; i < CollectedValue.length; i++) {
if (CollectedValue[i] > UpperCoherenceLimit || CollectedValue[i] < LowerCoherenceLimit) {
if (UpperCoherenceLimit != LowerCoherenceLimit) {
if (DisableCoherenceError == false) {
SkippedValueList.push(CollectedValue[i])
}
else {
SkippedValueList.push(CollectedValue[i])
}
}
}
else {
oCollectedValue.push(CollectedValue[i])
oCreatedOn.push(CreatedOn[i])
}
}
if (oCollectedValue.length == 0) {
Route = 'SKIP';
}
oCreatedOn.length.should.equal(3);
});
});

因此,您发布的代码并不能反映您所面临的问题。请给我们一个最小、完整和可验证的示例

最新更新