要求: 为在文本框中键入的每个字母创建复选框,如果按下了退格键,则删除该复选框。
下面提供的代码,如果从单词 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]
答案 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'])
);