这是我的试题答案整理,可能有多种答案。我也就写了一两种。在慢慢整合中

第一题

用js实现随机选取10-100之间的10个数字,存入一个数组,去重后求和(保证这10个数字不能出现重复)

要求:去重不能使用Set

请完善下面的题目

function sumOfRandomDistinctTenNumbers(){
// todo
}

我的答案

分析:Math.random()*90是0到90随机数,+10是10到100随机数,Math.floor是取整。

filter 进行数组去重。

function sumOfRandomDistinctTenNumbers(){
let arr=[]//空数组
for(let i=0;i<10;i++){
arr[i]=Math.floor(Math.random()*90+10);//10-100的随机数
}
// console.log(arr)//10个
//数组去重
arr=arr.filter((n,i)=>{
return arr.indexOf(n)===i
})
num=arr.reduce((x,y)=>{
return x+y
})
console.log(arr,num)//打印
}
sumOfRandomDistinctTenNumbers()

起初,我不并不清楚Set这种方式,所以稍微看了下Set去重的方式,确实更简单。我们来看看

const quchong=arr=>[...new Set(arr)];
console.log(quchong([1,2,3,2,3,2,true,false,true,'','',[1,2,3,2]]))//[1,2,3,true,false,'',[1,2,3,2]]

不过,可以看到,一级数组已经去重了,二级数组还是没有去重的。不过一般二级数组还是应该遍历去重。

第二题

给定一个编码字符,按编码规则进行解码,输出字符串。编码规则是count[letter],将letter的内容count次输出,count是0或正整数,letter是区分大小写的纯字母,支持嵌套形式。

示例:

请完善下面的题目

const s1 = '10[a]2[bc]'; decodeString(s); // 返回'aaaaaaaaaabcbc'
const s2 = '2[3[a]2[bc]]'; decodeString(s); // 返回 'aaabcbcaaabcbc' //请完善下面的方法
function decodeString() {
// todo
}

我的答案

分析:match正则表达式取出所有匹配“整数[字符串]”的集合,map遍历,将前面匹配的内容进行运算替换,递归调用该函数进行下一次匹配替换。直到替换完为止。

//解读字符串
function decodeString(str){
//若不存在[ 返回当前字符串
if(str.indexOf('[')==-1){
return str
}
//正则表示 整数[字符串] 并提取出所有匹配字符串
let list=str.match(/(\d+)(\[([a-z]|[A-Z])+\])/ig)
list.map((l)=>{
//l为所有匹配字符串
let s=l.indexOf('[')
let e=l.indexOf(']')
let num=l.substring(0,s)//次数
let char=l.substring(s+1,e)//字符
let charStr=''
for(let i=0;i<Number(num);i++){
charStr+=char
}
str=str.replace(l,charStr)//替换原字符串的匹配内容成新字符串
})
return decodeString(str);//再次重新解读新字符串
}
console.log(decodeString('2[10[a]2[bc3[d]]]qq'))

第三题

基于 React 框架写一个列表,列表每项有一个删除该项的功能。

请完善下面的题目

'use strict';

import React, { Component } from 'react';

// 单项
class Item extends Component {
state = {
} constructor(props) {
super(props);
} // 补全删除功能 render() {
return (
<div>
{/* 在此完成功能 */}
</div>
)
}
} // 列表
class List extends Component {
state = {
list: new Array(10).fill('')
} constructor(props) {
super(props);
} render() {
return (
<div>
<h1>List</h1>
{/* 完成渲染功能 */}
</div>
)
}
}

我的答案

分析:List组件中有多个Item组件,点击删除自身。子组件回调父组件方法

'use strict';

import React, { Component } from 'react';

// 单项
class Item extends Component{
state={}
constructor(props){
super(props)
console.log(props.data)
}
//删除 回调父组件函数
delete(){
this.props.delete()
}
render(){
return (
<div>
<span>内容{this.props.data.li}{this.props.data.i}</span>
<a href='javascript:;' onClick={this.delete.bind(this)}>删除</a>
</div>
)
}
}
//列表
class List extends Component{
state={
//10个元素的空字符串数组
list:new Array(10).fill('')
}
constructor(props){
super(props)
}
//删除数组指定位置元素
delete(i){
let {list}=this.state
delete list[i]
this.setState({list:list})
}
render(){
return (
<div>
<h1>List</h1>
{
this.state.list.map((li,i)=>{
return (
<Item key={i} data={{li:li,i:i}} delete={this.delete.bind(this,i)} />
)
})
}
</div>
)
}
}

效果图:

【web前端】前段时间的面题整理(1)的更多相关文章

  1. 腾讯2013笔试题—web前端笔试题 (老题练手)

    问题描述(web前端开发附加题1): 编写一个javascript的函数把url解析为与页面的javascript.location对象相似的实体对象,如:url :'http://www.qq.co ...

  2. [转] Web前端开发工程师常用技术网站整理

    1.常用工具相关 有道云笔记 http://note.youdao.com/signIn/index.html 36镇-最好用的共享收藏夹 http://www.36zhen.com/ 浏览器同步测试 ...

  3. Web前端开发工程师常用技术网站整理

    1.常用工具相关 有道云笔记 http://note.youdao.com/signIn/index.html 36镇-最好用的共享收藏夹 http://www.36zhen.com/ 浏览器同步测试 ...

  4. web前端教程《每日一题》(1-99)完结

    第1期(2016年4月6日): (1)js中关闭当前窗口的方法是:window.close(); 第2期(2016年4月7日): (1)js中使字符串中的字符变为小写的方法是:toLowerCase方 ...

  5. 收集的WEB前端程序员需要的网站整理

    前端学习资源实在是又多又广,在这样的一个知识的海洋里,我们像一块海绵一样吸收,想要快速提高效率,平时的总结不可缺少,以下总结了一些,排版自我感觉良好,推送出来. 一.插件类网站 jQuery插件库:h ...

  6. WEB前端程序员需要的网站整理

    前端学习资源实在是又多又广,在这样的一个知识的海洋里,我们像一块海绵一样吸收,想要快速提高效率,平时的总结不可缺少,以下总结了一些,排版自我感觉良好,推送出来. 一.插件类网站 jQuery插件库:h ...

  7. 资深阿里程序员一一为你解刨Web前端知识体系结构,付出与收获成正比!

    只要接触过前端,都会指导web前端的知识主要由三部分组成:分别为静态html,样式css,动态javascript(简称js)这三大部分组成.其三部分组成的一个体系的复杂程度不亚于其他一门技术的复杂程 ...

  8. 面试WEB前端如何才能通过?

    从事web前端工作七年时间,因为一直是非常热爱编程的,从小就有兴趣,大学就是学计算机的,技术应该比一般同龄的都要好一些,今天我想给大家讲述一下,目前想要做web前端开发,面试成功应该如何去学习,要具备 ...

  9. 【编码题篇】收集整理来自网络上的一些常见的 经典前端、H5面试题 Web前端开发面试题

    编写一个方法 求一个字符串的字节长度假设:一个英文字符占用一个字节,一个中文字符占用两个字节 function GetBytes(str){ var len = str.length; var byt ...

随机推荐

  1. 【转】Android编译系统详解(一)——build/envsetup.sh

    出处 http://www.cloudchou.com/android/post-134.html 本文原创作者:Cloud Chou. 欢迎转载,请注明出处和本文链接 准备好编译环境后,编译Rom的 ...

  2. Linux中配置jdk环境变量出错:bad ELF interpreter: No such file or directory解决方法

    yum install glibc.i686 重新安装,javac成功 如果还有如下类系错误 再继续安装包 error while loading shared libraries: libstdc+ ...

  3. 最简单的Android项目

    这是我在windows环境下,试验过的最简单Android项目,只用记事本和命令行即可完成. 环境准备 开发环境需要Java SDK(官网下载),Android SDK(官网下载). 首先安装Java ...

  4. Python 分页和shell命令行模式

    前言 除了手动添加你的文章后外,你还可以用命令行来添加,python 自带了一种命令行 就是 shell 快速添加博文:Shell命令行模式 在你的目录下:mysite python manage.p ...

  5. MySQL知识总结(缓存)

    1.缓存机制概念 缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql.如果表更改了,那么使用这个表的所有缓冲查询将不再有效,查 ...

  6. java的一些总结

    抽象方法和普通方法的区别???? 1.抽象方法必须要通过继承才能被实现,然后才能被对象调用:普通方法在定义的同时就已经实现了. 2.抽象方法只需声明,而不需实现某些功能 3.抽象方法必须要被重写 20 ...

  7. R语言-六大数据结构

    R语言有六种基本的数据结构(或者说数据类型吧).根据数据的维度和同质/异质可分为5种数据类型,最后再介绍一种特殊的类型“因子”.   同质 异质 1维 原子向量 列表 2维 矩阵 数据框 n维 数组 ...

  8. Zabbix MySQL监控模板添加

    zabbix自带的mysql监控指标很少,所以需要新增一些监控项 1.下载知数堂维护的percona-monitoring-plugin-zabbix代码 # cd /opt # wget https ...

  9. 解决"'pip' 不是内部或外部命令,也不是可运行的程序或批处理文件"的问题

    大家好,我是Connor,今天我为大家带来解决CMD命令无法直接运行 '点子' 进行安装库的问题. 今天本来想安装库来着,但是苦于pycharm的设置里不知道出了什么原因,无奈只能使用PIP功能来安装 ...

  10. React Native中集成友盟社会化分享-----童叟无欺

    1.下载所需的jar,下载地址https://developer.umeng.com/sdk/reactnative?spm=a211g2.211692.0.0.28967d238GW6mC 2.将以 ...