字符串替换或通过数组删除

String replace or remove through an array

本文关键字:数组 删除 替换 字符串      更新时间:2023-09-26

我正在使用 Google 脚本,所以纯粹的 JS。

我有以下数组:

[Tue Dec 23 00:00:00 GMT+00:00 2014,
816.43,
Tue Jan 28 00:00:00 GMT+00:00 2014,
729.43]

我想重新格式化日期以删除时间和 GMT 部分,使其如下所示:

[Tue Dec 23 2014,
816.43,
Tue Jan 28 2014,
729.43]

我创建了一个for循环,并尝试使用.replace函数将00:00:00GMT+00:00替换为我的数组中名为data的无内容(又名""

var arrayLength = data.length;
  for (var i = 0; i < arrayLength; i++) {
    var newData = data[i].replace("00:00:00", "");
  }

我收到以下错误:

TypeError: Cannot find function replace in object Tue Dec 23 2014 00:00:00 GMT-0000 (GMT)

如果(如OP评论中所述)您需要在忽略时间的情况下比较两个日期,最简单的方法是编写一些代码来执行此操作。有几种方法可以解决此问题:

  • 您可以编写一个函数来截断日期,以便00:00:00.0000
  • 您可以编写一个函数来比较两个日期,忽略一天中的时间

选择哪种方法取决于您自己的应用程序。

要比较两个日期,请忽略时间:

function sameDay(d1, d2) {
  return d1.getFullYear() === d2.getFullYear() &&
         d1.getMonth() === d2.getMonth() &&
         d1.getDate() === d2.getDate();
}

要创建一个新的 Date 实例,并将时间时钟设置回正好午夜,请执行以下操作:

function midnightOf(d) {
  return new Date(d.getFullYear(), d.getMonth(), d.getDate());
}

好吧,这不会给你你给出的确切格式,但也许这不是必需的(如果它是一个对象转储,输出无论如何都可能会有所不同):

for (var i = 0, arrayLength = data.length; i < arrayLength; i++) {
    if (data[i] instanceof Date) {
        data[i] = [data[i].getDay(), data[i].getMonth(), data[i].getYear()].join(' ');
    }
}

它假设您正在处理 Date 对象并使用该对象的方法。它还将日期对象转换为字符串,但从您的描述中,我认为您在这种情况下并不关心这一点。

试试这个 -

 var arrayLength = data.length;
  for (var i = 0; i < arrayLength; i++) {
    var newData = data[i].toString().replace("00:00:00", "");
  }

我认为数组"data"中的元素基本上是 Date 对象。它们不是字符串。

如果您有日期字符串并且格式一致,则可以使用以下方法重新格式化它:

var s = 'Tue Dec 23 00:00:00 GMT+00:00 2014';
var m = s.match(/^'w{3} 'w{3} 'd+|'d+$/g);
if (m) console.log(m.join(' '));

var n = s.split(' ');
console.log([n[0],n[1],n[2],n[5]].join(' '));

console.log(n[0] + ' ' + n[1] + ' ' + n[2] + ' ' + n[5]);

如果您有Date对象并希望以OP中建议的格式输出它们,则可以编写简单的函数,例如:

function formatDate(d) {
  var days = ['Sun','Mon','Tue','Wed','The','Fri','Sat'];
  var months = ['Jan','Feb','Mar','Apr','May','Jun',
                'Jul','Aug','Sep','Oct','Nov','Dec'];
  function z(n){return (n<10?'0':'') + n}
  return days[d.getDay()] + ' ' + months[d.getMonth()] + ' ' +
         z(d.getDate()) + ' ' + d.getFullYear();
}
console.log(formatDate(new Date(2014,11,2))); // Tue Dec 02 2014

以下是规范化您似乎拥有的日期数组的方法

var arrayLength = data.length;
for (var i = 0; i < arrayLength; i++) {
  data[i].setHours(12,0,0,0); // set to noon in case we are crossing DST
}