Javascript 在给定日期之前的数组中查找第一个严格的“最新”日期
我有一个编辑了三项的数组:数组的排序不是按日期,任何日期都可以按任何顺序:Javascript 在给定日期之前的数组中查找第一个严格的“最新”日期,javascript,arrays,Javascript,Arrays,我有一个编辑了三项的数组:数组的排序不是按日期,任何日期都可以按任何顺序: [ { "amount": 10, "date": "2020-04-21", }, { "amount": 75, "date": "2020-04-22", }, { "amount": 100, "date": "2020-04-30", } ] 我试图创建一个vue函数,对于每个日期,它都返回上一个日期的金额 previousAmount(
[
{
"amount": 10,
"date": "2020-04-21",
},
{
"amount": 75,
"date": "2020-04-22",
},
{
"amount": 100,
"date": "2020-04-30",
}
]
我试图创建一个vue函数,对于每个日期,它都返回上一个日期的金额
previousAmount(givendate){
var sum = []; // I need to use this for other purposes
console.log(givendate) // print the current date the function is working on
for (var i = 0; i < this.vuedataarray.length; i++) {
if (givendate > this.vuedataarray[i].date) {
console.log(this.vuedataarray[i].date) // should only print the first date found before givendate, is printing ALL the dates before givendate
sum.push(this.vuedataarray[i].amount)
};
}
console.log(sum)
}
如果给定日期为2020-04-30,那么sum将打印为[75,10],而不仅仅是[75],因为75是2020-04-22的金额,即2020-04-30之前的第一个日期,我希望实现的目标
我找到了一个能准确描述我想要实现的目标的数组,但使用的是一个只包含不带键的整数的简单数组和其他语言。每次在数组中找到一个比给定日期早的日期时,你都在推求和,而不仅仅是在数组中找到给定日期之前的最新日期
您说过数组并不总是按日期顺序排列的,所以这意味着您必须始终循环遍历整个数组。您需要跟踪您认为可能是您需要的日期和金额,但如果您发现比给定日期更早的日期,请更新这些日期和金额:
function previousAmount(givendate) {
const sum = [];
let prevAmount, prevDate;
for (const {amount, date} of vuedataarray) {
if (date < givendate && (!prevDate || date > prevDate)) {
prevAmount = amount;
prevDate = date;
}
}
if (prevDate) { // Checks we found one at all
sum.push(prevAmount);
}
console.log(sum);
}
实例:
//注意:我已经更改了数组顺序,因此我们想要的是
//最后,秩序混乱
常数vuedataarray=[
{
金额:10,
日期:2020-04-21,
},
{
金额:100,
日期:2020-04-30,
},
{
金额:75,
日期:2020-04-22,
}
];
函数previousAmountgivendate{
常数和=[];
让我们预测金额、预测日期;
对于vuedataarray的常量{amount,date}{
如果日期之前的金额2020-04-30;//(75)数组是否总是按日期排序?对不起,我不能理解你的问题,你能解释一下吗?你的问题中的数组有日期顺序,最早的是第一个,中间的是第二个,最新的是第第三个。这总是真的吗?或者数组中的晚一天有时比早一天早吗?谢谢@T.J.Crowder,不,数组不会总是以这种方式排序,晚一天可以位于不同的位置,因为此数组模拟用户项,可以由idbrilliant随时创建,第一个很好,感谢您的回答和所有解释!