indexOf 与 for 循环性能分析

console.clear()
let a = []
// populating array data
for (let i = 0; i < 100000; i++) {
    a.push(i)
}
let testNum = 90000
let found
let totalMS4ForLoop = 0
let totalMS4ForIn = 0
let totalMS4IndexOf = 0
let start
let end
// simulating 10000 requests which are come consecutively
for (o = 0; o < 10000; o++) {
start = Date.now()
  for (let i = 0; i < a.length; i++) {
    if (a[i] == testNum) { found = a[i]; break }
  }
  end = Date.now()
  totalMS4ForLoop += end - start
start = Date.now()
  for (let j in a) {
    if (a[j] == testNum) { found = a[j]; break }
  }
  end = Date.now()
  totalMS4ForIn += end - start
start = Date.now()
  found = a[a.indexOf(testNum)]
  end = Date.now()
  totalMS4IndexOf += end - start
}
console.log("100000x10000 for-loop executions took total " + totalMS4ForLoop + " ms.")
console.log("100000x10000 for-in executions took total " + totalMS4ForIn + " ms.")
console.log("100000x10000 indexOf executions took total " + totalMS4IndexOf + " ms.")

100000x10000 for-loop executions took total 283 ms.
100000x10000 for-in executions took total 33368 ms.
100000x10000 indexOf executions took total 113 ms.

使用JS,判断是一个变量是否为数字或字符串数字

当你使用 JavaScript 时,可以编写一个函数来判断一个变量是否为数字,包括字符串中表示数字的情况。以下是一个示例函数:

function isNumeric(value) {
  // 使用 typeof 来判断变量是否为数字类型
  if (typeof value === 'number') {
    return true;
  }

  // 使用正则表达式来检查字符串是否表示数字
  if (typeof value === 'string' && value.trim() !== '') {
    // 去除字符串两端的空格,并检查是否为空字符串
    return /^\d+(\.\d+)?$/.test(value.trim());
  }

  return false;
}

Continue reading 使用JS,判断是一个变量是否为数字或字符串数字

cdr设置

HOSTS添加

127.0.0.1 apps.corel.com
127.0.0.1 mc.corel.com
127.0.0.1 origin-mc.corel.com
127.0.0.1 iws.corel.com
127.0.0.1 idp.corel.com

如有Clash,配置-更多配置

apps.corel.com,mc.corel.com,origin-mc.corel.com,iws.corel.com,idp.corel.com

js 数组 倒序

要对 JavaScript 中的数组(也称为列表)进行倒序排列,可以使用数组的 reverse() 方法。例如,假设有以下数组:

const arr = [1, 2, 3, 4, 5];

要将该数组倒序排列,只需调用 reverse() 方法:

arr.reverse();

此操作将修改原始数组 arr,使其成为 [5, 4, 3, 2, 1]

如果你不想直接修改原始数组,你可以首先创建原始数组的一个副本,然后再调用 reverse() 方法:

const arr = [1, 2, 3, 4, 5];
const reversedArr = arr.slice().reverse();

此操作将不会修改原始数组 arr,而是返回一个新的数组 reversedArr,它是 arr 的副本,且已经倒序排列。

windows chrome 浏览器 关闭 preflight 预检策略

Chrome 浏览器的 CORS 预检请求(Cross-Origin Resource Sharing Preflight Request),在 Chrome 浏览器中关闭这些预检请求,使用以下方法:

在 Chrome 浏览器的地址栏中输入 chrome://flags/#out-of-blink-cors ,并启用此标志。这将禁用浏览器在 Blink 内核(Chrome 浏览器的核心渲染引擎)内执行 CORS 预检请求,从而提高性能。但是,注意这可能会导致某些网站无法正常工作。关闭 Chrome 浏览器并重新启动它以使更改生效。

需要说明的是,这种调整可能会影响您使用浏览器的方式,并可能对您的计算机的安全和稳定性产生影响。因此,请在更改浏览器设置之前慎重考虑,并确保在进行任何更改之前备份您的计算机以避免任何潜在的损失或问题。

JAVA中对List根据Map某个key值进行排序

JAVA中对List根据Map某个key值进行排序

可以使用Java 8的Stream API和Comparator来对List根据Map中的某个key值进行排序。具体步骤如下:

  1. 使用Stream API将List转换为Stream。
  2. 使用sorted方法对Stream中的元素进行排序,传入Comparator.comparing方法,并使用Lambda表达式指定要排序的Map中的key值。
  3. 使用collect方法将Stream转换为List。

示例代码如下:

List<Map<String, Object>> list = new ArrayList<>();
// 假设list中有多个Map元素,每个Map都包含“name”和“age”两个key值

List<Map<String, Object>> sortedList = list.stream()
    .sorted(Comparator.comparing(m -> (String) m.get("name")))
    .collect(Collectors.toList());
// 根据Map中的“name”值对List进行排序

注意:在使用Lambda表达式时,需要将Map中的value强制转换为对应的类型。

JAVA中对List根据Map某个key值按照指定list顺序进行排序

可以使用Java 8的Stream API和Comparator来对List根据Map中的某个key值按照指定List顺序进行排序。具体步骤如下:

  1. 创建一个包含指定顺序的key值列表。
  2. 使用Stream API将List转换为Stream。
  3. 使用sorted方法对Stream中的元素进行排序,传入一个Comparator对象,并使用Lambda表达式指定排序的规则。在Lambda表达式中,首先使用indexOf方法获取当前Map的key值在指定顺序列表中的下标,然后使用compareTo方法对下标进行比较。
  4. 使用collect方法将Stream转换为List。

示例代码如下:

List<Map<String, Object>> list = new ArrayList<>();
// 假设list中有多个Map元素,每个Map都包含“name”和“age”两个key值

List<String> order = Arrays.asList("Tom", "Jerry", "Mike", "John");
// 假设按照指定顺序排序的key值为“name”,顺序为“Tom”、“Jerry”、“Mike”、“John”

List<Map<String, Object>> sortedList = list.stream()
    .sorted(Comparator.comparing(m -> order.indexOf(m.get("name"))))
    .collect(Collectors.toList());
// 根据Map中的“name”值按照指定顺序对List进行排序

注意:在使用Lambda表达式时,需要将Map中的value强制转换为对应的类型。在indexOf方法中,如果当前Map的key值不在指定顺序列表中,将会返回-1。