比较两个字符串数组并使用jquery返回未找到的元素的键

时间:2019-08-16 09:08:57

标签: jquery arrays

要求: 为在文本框中键入的每个字母创建复选框,如果按下了退格键,则删除该复选框。

下面提供的代码,如果从单词 apple

中删除了字母 p ,则该代码无效

>>> import jedi
>>> jedi.Script('import dataset;dataset.table.Table.insert').goto_definitions()
[<Definition full_name='dataset.table.Table.insert', description='def insert'>]

预期:返回索引:var diffIndexes = []; Array.prototype.diff = function(a) { var source = this; return this.filter(function(i) { if (a.indexOf(i) < 0) { diffIndexes.push(source.indexOf(i)); return true; } else { return false; } }); }; values = ['a', 'p', 'p', 'l', 'e'].diff(['a', 'p', 'l', 'e']); console.log(diffIndexes)

实际:返回索引:[2]

1 个答案:

答案 0 :(得分:0)

遍历两个数组时,请将完整数组元素与arrWithHoles[0]处的元素进行比较。如果它们不同,那么我们就陷入困境,可以将其推到数组中以返回;否则,存在匹配项,因此移出arrWithHoles中的第一个元素,以便可以正确比较下一个元素:

Array.prototype.diff = function(a) {
  const arrWithHoles = a.slice(); // don't mutate the input
  const base = this;
  const holeIndicies = [];
  base.forEach((char, i) => {
    if (arrWithHoles[0] !== char) {
      holeIndicies.push(i);
    } else {
      // Character found at start of other array - they match up, remove:
      arrWithHoles.shift();
    }
  });
  return holeIndicies;
};

console.log(
  ['a', 'p', 'p', 'l', 'e'].diff(['a', 'p', 'l', 'e']),
  ['a', 'b', 'c', 'd', 'e'].diff(['a', 'd', 'e']),
  ['d', 'a', 'd'].diff(['a', 'd'])
);