util.diff(actual, expected)


稳定性: 1 - 实验性

  • actual <Array> | <string> 要比较的第一个值
  • expected <Array> | <string> 要比较的第二个值
  • 返回:<Array> 差异条目的数组。每个条目是一个包含两个元素的数组:
    • 0 <number> 操作代码:-1 删除,0 无操作/未更改,1 插入
    • 1 <string> 与操作相关的值
  • 算法复杂度:O(N*D),其中:
  • N 是两个序列合并后的总长度 (N = actual.length + expected.length)
  • D 是编辑距离(将一个序列转换为另一个序列所需的最少操作次数)。

util.diff() 比较两个字符串或数组值,并返回一个差异条目的数组。它使用 Myers 差异算法来计算最小差异,这也是断言错误消息内部使用的算法。

如果值相等,则返回一个空数组。

【If the values are equal, an empty array is returned.】

const { diff } = require('node:util');

// Comparing strings
const actualString = '12345678';
const expectedString = '12!!5!7!';
console.log(diff(actualString, expectedString));
// [
//   [0, '1'],
//   [0, '2'],
//   [1, '3'],
//   [1, '4'],
//   [-1, '!'],
//   [-1, '!'],
//   [0, '5'],
//   [1, '6'],
//   [-1, '!'],
//   [0, '7'],
//   [1, '8'],
//   [-1, '!'],
// ]
// Comparing arrays
const actualArray = ['1', '2', '3'];
const expectedArray = ['1', '3', '4'];
console.log(diff(actualArray, expectedArray));
// [
//   [0, '1'],
//   [1, '2'],
//   [0, '3'],
//   [-1, '4'],
// ]
// Equal values return empty array
console.log(diff('same', 'same'));
// []