好的,假设我有两个相等的数组
var arrayData=[800,802,804,806]
var arrayLabels=['11/10/2018','12/10/2018','13/10/2018','14/10/2018']
我如何创建一个循环,一旦arrayData
达到1000,并且console.log
到达arrayLabel
时就停止?
基本上,我想知道在哪个日期达到某个值。
如果没有永远的循环,我什么也想不起来。
谢谢!
答案 0 :(得分:2)
那么,数组是通过索引连接的吗?
arrayData中的值802应该从arrayLabels返回'12 / 10/2018'吗?
如果是这种情况:
const index = arrayData.indexOf(1000);
if(index !== -1) console.log(arrayLabels[index];
答案 1 :(得分:0)
如果您只想知道日期将是“ 1000”,则可以将日期偏移为800,将其与1000的差除以2。这实际上是在为您提供离开的天数可以预期日期为1000。
const arrayData = [ 800, 802, 804, 806 ]
const arrayLabels = [ '11/10/2018', '12/10/2018', '13/10/2018', '14/10/2018' ]
function dateAt(number) {
const diff = number - 800
const date = new Date('2018-10-11')
date.setDate(date.getDate() + diff / 2)
return date
}
function numberFor(dateString) {
const date = dateString.split('/').reverse().join('-')
const diff = new Date(date) - new Date('2018-10-11')
return 800 + diff / (1000 * 60 * 60 * 24) * 2
}
const dates = arrayData.map(n => dateAt(n))
const numbers = arrayLabels.map(d => numberFor(d))
console.log({ dates, numbers })
console.log(`Date @ 1000 = ${dateAt(1000).toString()}`)
答案 2 :(得分:0)
跳过阵列,您不需要它们。
假设您的start_number = 699
和您的start_date = 11\11\2018
。
计算start_number
和1000
(在这种情况下为diff = 301
)之间的差。
如果您是steps = 2
,则在( diff / steps ) = 150.5
之后知道您到达了1000
。将其四舍五入为151(您希望等于或大于1000)。
然后解析日期并添加151天。
所以...
var start_number = 699,
end = 1000,
steps = 2,
start_date = '11\11\2018',
diff = Math.ceil ( (end - start_number) / steps) ),
date = new Date(start_date);
date.setDate(date.getDate() + diff);
你有约会的日子... 2019年4月11日