代码战争:哪些在?字典顺序(Javascript)
我目前正在用javascript解决代码战中的以下问题。 问题如下:代码战争:哪些在?字典顺序(Javascript),javascript,sorting,lexicographic-ordering,Javascript,Sorting,Lexicographic Ordering,我目前正在用javascript解决代码战中的以下问题。 问题如下: function inArray(array1,array2){ var result = []; var newResult = []; for(var i = 0; i < array2.length; i++) { for(var j = 0; j < array1.length; j++) { if(array2[i].includes(array1[j])) {
function inArray(array1,array2){
var result = [];
var newResult = [];
for(var i = 0; i < array2.length; i++) {
for(var j = 0; j < array1.length; j++) {
if(array2[i].includes(array1[j])) {
result.push(array1[j])
}
}
}
for(var k = 0; k < result.length; k++) {
if(result[k] !== result[k+1]) {
newResult.push(result[k]);
}
}
return newResult.sort();
}
“给定两个字符串数组a1和a2,返回按a1字符串字典顺序排序的数组r,a1字符串是a2字符串的子字符串。”
下面是我为这个问题编写的代码:
function inArray(array1,array2){
var result = [];
var newResult = [];
for(var i = 0; i < array2.length; i++) {
for(var j = 0; j < array1.length; j++) {
if(array2[i].includes(array1[j])) {
result.push(array1[j])
}
}
}
for(var k = 0; k < result.length; k++) {
if(result[k] !== result[k+1]) {
newResult.push(result[k]);
}
}
return newResult.sort();
}
我的代码似乎通过了所有的示例测试,但我无法通过所有的规范。它说我10个规格中有5个不合格。
我不知道为什么我不符合这些规格。
我的代码有问题吗?或者有什么方法可以改进我的代码吗?我建议更改for循环(从
array1
开始,而不是array2
),并在找到项目时使用标签跳过内部循环
使用此方法,您不需要过滤结果中的重复项
函数inaray(array1,array2){
变量i,j,结果=[];
外部:用于(j=0;j
.as console wrapper{max height:100%!important;top:0;}
并不是说你应该要求解决kata上的堆栈溢出问题,而是因为你已经差不多做到了,所以这里有我的想法
首先,当不确定最终测试失败的原因时,请使用console.log()并查看正在测试的值,甚至可能是预期结果(取决于kata的编写方式)
其次,您的解决方案不起作用,因为您在最终答案中包含了双重/重复项
我目前正在使用集合来消除JS代码中的重复项。集合只包含唯一的值,非常酷。如果在代码中添加以下三行而不是当前返回,则应通过所有测试:
var setOfRes = new Set(newResult.sort());
var array = Array.from(setOfRes);
return array;
是的,我正在从一个数组转换为一个集合,以消除重复项,然后再转换回一个数组。这可以用很多其他的方法来完成,但是集合是一个很好的工具,所以这里是我的建议。您需要使用.sort()
function inArray(arrA, arrB){
let arr = arrB.join(" ")
return arrA.filter(item => arr.search(item) !== -1 && item !== undefined ).sort()
}
函数inaray(array1,array2){
var x;
变量y;
var r=[];
对于(x=0;x
请为您的解决方案添加一些解释let arr=arrB.join(“”//将其arrB转换为以“”分隔的字符串,然后我过滤包含要查找的单词的arrA。如果arrA中的字符串或项目也位于(由“”分隔的arr字符串)中,且项目未定义,则将其添加到由filter方法创建的新列表中。您可以编辑答案。如果搜索包含“
,则解决方案将失败。例:[“ab”,“cd”][“bc”]
“bc”
假阳性。抓得好!我认为我需要将javascript arrB.join(“”)更改为javascript arrB.join(“”)
function inArray(array1,array2){
var x;
var y;
var r = [];
for (x = 0; x < array1.length; x++) {
for (y = 0; y < array2.length; y++) {
if(array2[y].includes(array1[x]) === true){
r.push(array1[x]);
}else{
}
}
}
r = [...new Set(r)];
return r.sort();
}