javascript - 如何将数组中的非整数替换为空字符串 jQuery

标签 javascript jquery

我有包含数据的数组:

["05:45", "06:00", "06:15", "06:30", "06:45", "07:00", "07:15", "07:30", "07:45", "08:00", "08:15", "08:30", "08:45", "09:00", "09:15", "09:30", "09:45", "10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30", "11:45", "12:00", "12:15", "12:30", "12:45", "13:00", "13:15", "13:30", "13:45", "14:00", "14:15", "14:30", "14:45", "15:00"]

对于这个数据,我需要替换不等于零的数字,所以我必须有这样的数组:

["", "06:00", "", "", "", "07:00", "", "", "", "08:00", "", "", "", "09:00", "", "", "", "10:00", "", "", "", "11:00", "", "", "", "12:00", "", "", "", "13:00", "", "", "", "14:00", "", "", "", "15:00"]

为此我创建了函数,但由于某种原因它不起作用:

var intervals = ["05:45", "06:00", "06:15", "06:30", "06:45", "07:00", "07:15", "07:30", "07:45", "08:00", "08:15", "08:30", "08:45", "09:00", "09:15", "09:30", "09:45", "10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30", "11:45", "12:00", "12:15", "12:30", "12:45", "13:00", "13:15", "13:30", "13:45", "14:00", "14:15", "14:30", "14:45", "15:00"]

function hideNumbers() {
  for (var i = 0; i < intervals.length; i++) {
    var c = intervals[i].split(':');
    var time = parseInt(c[1])
    var result = (c[0] + ':' + c[1])

    if (time != 00) {
      intervals[i].replace(result, "");
    }
  }
  console.log(intervals)
}

hideNumbers();

那么问题出在哪里呢?

最佳答案

.replace() 不会就地替换,它会将替换内容作为新字符串返回,因此您需要:

intervals[i] = intervals[i].replace(result, "");

var intervals = ["05:45", "06:00", "06:15", "06:30", "06:45", "07:00", "07:15", "07:30", "07:45", "08:00", "08:15", "08:30", "08:45", "09:00", "09:15", "09:30", "09:45", "10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30", "11:45", "12:00", "12:15", "12:30", "12:45", "13:00", "13:15", "13:30", "13:45", "14:00", "14:15", "14:30", "14:45", "15:00"]

function hideNumbers() {
  for (var i = 0; i < intervals.length; i++) {
    var c = intervals[i].split(':');
    var time = parseInt(c[1])
    var result = (c[0] + ':' + c[1])

    if (time != 00) {
      intervals[i] = intervals[i].replace(result, "");
    }
  }
  console.log(intervals)
}

hideNumbers();

<小时/>

额外:

正如评论中所指出的,当您希望删除该条目时,根本不需要 .replace()

但是了解为什么 x.replace(... 不会更改 x 并且需要 x = x.replace(.. ..

作为其他额外内容:也不需要 parseInt(c[1]) 并且您可以直接与 if (c[1] === "00") 进行比较

<小时/>

额外额外:

虽然问题是关于您的代码(.replace() 不替换),但还有其他方法可以做到这一点,例如:

var intervals = ["05:45", "06:00", "06:15", "06:30", "06:45", "07:00", "07:15", "07:30", "07:45", "08:00", "08:15", "08:30", "08:45", "09:00", "09:15", "09:30", "09:45", "10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30", "11:45", "12:00", "12:15", "12:30", "12:45", "13:00", "13:15", "13:30", "13:45", "14:00", "14:15", "14:30", "14:45", "15:00"]

function hideNumbers() {
  intervals = intervals.map(x => x.split(":")[1]!=="00" ? "" : x);
  console.log(intervals)
}

hideNumbers();

关于javascript - 如何将数组中的非整数替换为空字符串 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59303908/

相关文章:

javascript - 处理全页部分之间的滚动,并溢出 :hidden on body

jquery - ('load, function () {}) doesn' 上的 iframe 着火了,为什么? .ready() 触发

javascript - 如何确定是否启用了 activex 控件?

javascript - 如果此类存在,或者此类不存在,请使用 jQuery 执行某些操作并提交表单 - 但不会提交

javascript - 将数组存储在本地存储中

javascript - 在 getorgchart jquery 插件中如何删除屏幕底部的 getorgchart 超链接

javascript - 函数不从正文页面调用

javascript - 如何在返回 false 时启用事件冒泡?

javascript - 从 JQuery 方法将值设置为 TextField

javascript - 动态创建一个 JavaScript 对象客户端