• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > codewars 匹配字符串

codewars 匹配字符串

作者:yy406961 字体:[增加 减小] 来源:互联网 时间:2017-09-16

yy406961通过本文主要向大家介绍了javascript等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

题目

 

What is an anagram? Well, two words are anagrams of each other if they both contain the same letters. For example:

'abba' & 'baab' == true

'abba' & 'bbaa' == true

'abba' & 'abbba' == false

Write a function that will find all the anagrams of a word from a list. You will be given two inputs a word and an array with words. You should return an array of all the anagrams or an empty array if there are none. For example:

anagrams('abba', ['aabb', 'abcd', 'bbaa', 'dada']) => ['aabb', 'bbaa']

anagrams('racer', ['crazer', 'carer', 'racar', 'caers', 'racer']) => ['carer', 'racer']

anagrams('laser', ['lazing', 'lazy',  'lacer']) => []

传入一个字符串和一个数组,将数组中与字符串的字母个数相同的找出来,返回新数组。

 

我的答案

 

function anagrams(word, words) {
  let str1 = newStr(word)
  let arr = []
  words.forEach(item => {
    let str2 = newStr(item)
    if(str1 === str2){
      arr.push(item)
    }
  })
  return arr
}

function newStr(str){
  let arr = str.split('')
  arr.sort()
  let newStr = arr.join('')
  return newStr
}


票数最高的答案

 

 

String.prototype.sort = function() {
  return this.split("").sort().join("");
};

function anagrams(word, words) {
  return words.filter(function(x) {
      return x.sort() === word.sort();
  });
}

 

 

 

思考:

1、首先解题的思路是相同的,给string加API跟自定义一个函数,用到prototype显得高级一些。

2、代码多尝试使用链式解构,看起来会简洁,写代码原则是尽可能的少写

3、filter的使用。面对数组不要总想着forEach。

 

filter():  

 

 语法:

var filteredArray = array.filter(callback[, thisObject]);

参数说明:

callback: 要对每个数组元素执行的回调函数。
thisObject : 在执行回调函数时定义的this对象。

复制代码


 
//过滤掉小于 10 的数组元素: //代码: function isBigEnough(element, index, array) { return (element >= 10); } var filtered = [12, 5, 8, 130, 44].filter(isBigEnough); // 12, 130, 44 //结果:[12, 5, 8, 130, 44].filter(isBigEnough) : 12, 130, 44 

 


复制代码

 

功能说明:

对数组中的每个元素都执行一次指定的函数(callback),并且创建一个新的数组,该数组元素是所有回调函数执行时返回值为 true 的原数组元素。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略,同时,新创建的数组也不会包含这些元素。

回调函数可以有三个参数:当前元素,当前元素的索引和当前的数组对象。

如参数 thisObject 被传递进来,它将被当做回调函数(callback)内部的 this 对象,如果没有传递或者为null,那么将会使用全局对象。

filter 不会改变原有数组,记住:只有在回调函数执行前传入的数组元素才有效,在回调函数开始执行后才添加的元素将被忽略,而在回调函数开始执行到最后一个元素这一期间,数组元素被删除或者被更改的,将以回调函数访问到该元素的时间为准,被删除的元素将被忽略。

 

 

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

注意: filter() 不会对空数组进行检测。

注意: filter() 不会改变原始数组。

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11javascript数据结构之串的概念与用法分析
  • 2017-05-11bootstrap 下拉多选框进行多选传值问题代码分析
  • 2017-05-11javascript实现简易计算器
  • 2017-05-11微信小程序 两种为对象属性赋值的方式详解
  • 2017-05-11Javascript的this用法
  • 2017-05-11js仿拉勾网首页穿墙广告效果
  • 2017-05-11jQuery密码强度验证控件使用详解
  • 2017-05-11jquery滚动条插件slimScroll使用方法
  • 2017-05-11jQuery实现遍历复选框的方法示例
  • 2017-05-11快速实现jQuery多级菜单效果

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • jquery.tableSort.js表格排序插件使用方法详解
    • 移动端使用localResizeIMG4压缩图片
    • 使用vue.js写一个tab选项卡效果
    • JavaScript利用Date实现简单的倒计时实例
    • Vue如何引入远程JS文件
    • Javascript 链式作用域详细介绍
    • NodeJs的fs读写删除移动监听
    • jquery设置css样式的多种方法(总结)
    • js遍历json对象所有key及根据动态key获取值的方法(必看)
    • xmlplus组件设计系列之分隔框(DividedBox)(8)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有