我正在努力提高我的Javascript技能,并在代码大战中加入一些katas。这是一个这样的卡塔:
在面试时,你很难写一个算法来检查给定的字符串s是否可以由另外两个字符串part1和part2组成。
限制是part1和part2中的字符与s中的字符顺序相同。
面试官给出了以下示例,并告诉您从给定的测试用例中找出其余部分。
例如:
'codewars'是来自'cdw'和'oears'的合并:
s: c o d e w a r s = codewars part1: c d w = cdw part2: o e a r s = oears
以下是我正在处理的解决方案:
function presentInString(element, index, array) {
return string.includes(element);
}
function isMerge(s, part1, part2) {
string = s;
var mergedParts = (part1 + part2).split('');
mergedParts.every(presentInString);
}
我的方法很简单,我通过字符串'codewars'
和部分'cdw'
和'oears'
传递上述方法应该返回true,因为所有字符都在字符串中。但我不断收到Value is not what was expected
错误。我必须使用.every
方法错误,但我不确定如何。我几乎是基于Javascript MDN文档。有人能指出我做错了吗?
此外,我是否必须创建另一个函数才能传递到.every
?我宁愿纠正.every
范围内的逻辑,而不是写另一个函数来传递给。{/ p>
答案 0 :(得分:0)
我无法保证您的整体算法,但isMerge
的问题在于它没有使用every
的返回值并且不会返回任何内容。你可能想要:
return mergedParts.every(presentInString);
作为最后一行,无论isMerge
返回every
,如果true
返回每个元素的真值,presentInString
返回false
form
如果它没有。