有人可以帮助解释为什么我用Javascript得到这个'价值不是预期的'错误?

时间:2016-11-16 13:46:30

标签: javascript

我正在努力提高我的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文档。有人能指出我做错了吗?

  • 顺便说一下,这是一个正在进行中的kata,我没有测试过所有边缘情况。有些案例会失败。

此外,我是否必须创建另一个函数才能传递到.every?我宁愿纠正.every范围内的逻辑,而不是写另一个函数来传递给。{/ p>

1 个答案:

答案 0 :(得分:0)

我无法保证您的整体算法,但isMerge的问题在于它没有使用every的返回值并且不会返回任何内容。你可能想要:

return mergedParts.every(presentInString);

作为最后一行,无论isMerge返回every,如果true返回每个元素的真值,presentInString返回false form如果它没有。