codewars的一道题,搞不懂

题目

Given two arrays of strings a1 and a2 return a sorted array r in lexicographical order of the strings of a1 which are substrings of strings of a2.

例子

Example 1:
a1 = ["arp", "live", "strong"]
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]
returns ["arp", "live", "strong"]

Example 2:
a1 = ["tarp", "mice", "bull"]
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]
returns []

要求

要求实现function inArray(array1,array2){}

测试用例:

a2 = ["lively", "alive", "harp", "sharp", "armstrong"]
a1 = ["xyz", "live", "strong"]
Test.assertSimilar(inArray(a1, a2), ["live", "strong"])
a1 = ["live", "strong", "arp"]
Test.assertSimilar(inArray(a1, a2), ["arp", "live", "strong"])
a1 = ["tarp", "mice", "bull"]
Test.assertSimilar(inArray(a1, a2), [])
阅读 3.3k
3 个回答

供参考:

function inArray(a1, a2){
    return a1.filter(el_a1 => a2.find(el_a2 => el_a2.includes(el_a1))).sort();
}

简单来说,返回a2中存在的a1字串,顺序为a1的顺序。

比如harp和sharp都有字串arp。lively和alive都有字串live,amstrong有字串strong。然后返回的顺序对应a1的顺序,所以返回["arp", "live", "strong"]

推荐问题
宣传栏