मेरे पास मिलीसेकंड में टाइमस्टैम्प वाला ऑब्जेक्ट है:

const indexes = {
      index1: 1490659200000 // 2017-03-28
      index2: 1490659200000 // 2017-03-28
      index3: 1498608000000 // 2017-06-28
}

एक इंडेक्स को कैसे हटाएं जहां टाइमस्टैम्प वर्तमान समय से एक वर्ष से अधिक पुराना हो। new Date().getTime() -1522269838207। दरअसल, ऑब्जेक्ट के माध्यम से तेज़ तरीका लूप क्या है और 1 वर्ष से अधिक पुराने टाइमस्टैम्प को हटा दें। हो सकता है कि yyyy-mm-dd में कनवर्ट करें और yyyy, mm-dd . द्वारा तुलना करने से बेहतर हो

Object.keys(indexes).forEach(i => {
   if (indexes[i] < new Date().getTime())
     delete indexes[i];
})
0
Palaniichuk Dmytro 29 मार्च 2018, 00:03

3 जवाब

सबसे बढ़िया उत्तर
const YEAR_IN_MS = 31556952000; // Year in milliseconds
var now = Data.now(); // current timestamp
Object.keys(indexes).forEach(i => {
    if (now - indexes[i] >= YEARS_IN_MS) // get difference time and check if greater or equal than year
        delete indexes[i];
})
1
user5596133user5596133 28 मार्च 2018, 21:20

एक विकल्प reduce ऑपरेशन one year - date in object के साथ फ़ंक्शन का उपयोग कर रहा है

यह दृष्टिकोण एक वर्ष से अधिक पुरानी तारीखों के साथ एक नई सरणी बनाएगा।

const indexes = { index1: 1490659200000, index2: 1490659200000,  index3: 1498608000000}

var oneYearAgo = new Date();
oneYearAgo.setFullYear( oneYearAgo.getFullYear() - 1 );

var result = Object.keys(indexes).reduce((a, c) => {
  if (oneYearAgo.getTime() - indexes[c] > 0) a.push(indexes[c]);
  return a;
}, [])

console.log(result);
1
Ele 28 मार्च 2018, 21:23

यह इस बात पर निर्भर करता है कि "एक वर्ष से अधिक पुराना" कितना सटीक होना चाहिए। यदि हम माने कि उस वर्ष में 365 दिन होते हैं तो:

const indexes = {
    index1: 1490659200000, // 2017-03-28
    index2: 1490659200000, // 2017-03-28
    index3: 1498608000000 // 2017-06-28
}

var currentDate = new Date();
var year = 365 * 24 * 60 * 60 * 1000;

for (var index in indexes) {
    if (indexes[index] < (currentDate - year)) delete indexes[index];
}
1
Matus Dubrava 28 मार्च 2018, 21:18