Which are in?

Description:

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 [];
solution:

1:

function inArray(arr1, arr2) {
  return arr1.filter(function(needle) {
    return arr2.some(function(haystack) {
      return haystack.indexOf(needle) > -1;
    });
  }).sort();
}

解题:操作数组的几种用法 ,fliter这个函数会传入一个回调函数 ,对数组里的每个元素执行一遍 ,然后返回一个新的数组 ;
具体用法:
[1,2,3,4,5].filter(function(item,index){
return item>2;
});
常用的函数包括

[1,2,3,4,5].map(function(item,index){
  return item>2;
});
会对数据里的每个元素,执行一遍函数 ,然后返回执行结果 ,比如这个例子就是返回 flase ,flase,true,true,true
[1,2,3,4,5].some(function(item,index){
  return item >5;
});
会对数组里的每个元素,执行一遍函数 ,直到此函数返回 true;
如果回调函数对每个元素执行后都返回 false ,some 将返回 false。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略。

[1,2,3,4,5].some(function(item,index){
  return item >5;
});

对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 false,如果发现这个元素,every 将返回 false,如果回调函数对每个元素执行后都返回 true ,every 将返回 true。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略;

[1,2,3,4,5].forEach(function(item,index){

  return item >5;
});

没啥好说的;
2

function inArray(array1,array2){
  return array1
    .filter(a1 => array2.find(a2 => a2.match(a1)))
    .sort()
}

解题:

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

 

=>es6语法中的arrow function

 

举例:
 var add= (a,b)=>a+b;
 就相当于:
 function add(a,b){
   return a+b;
 }
3.其他解法都差不多的意思

function inArray(a1, a2) {
  var str = a2.join(' ');
  return a1.filter(s => str.indexOf(s) !== -1).sort();
}

同2

function inArray(array1,array2){
  var array3 = [];
  
  array1.forEach(word=>array2.forEach(e => e.includes(word) ? array3.push(word) : 0));
  
  return array3.sort().filter((e,i,a) => e !== a[i+1]);
}
function inArray(array1,array2){
    return array1.filter(function(value){return (array2.join('-').indexOf(value))!=-1}).sort();
}



 

 

posted @ 2016-11-17 10:20  shaoxia.s  阅读(199)  评论(0)    收藏  举报