JS面试题3——slice,splice,数组去重,多维数组中的最大值...

  1. slice的作用------用于截取数据------不会影响原数组
javascript 复制代码
<script>
var arr1 = ['a','b','c','d','e'];
var arr2 = arr1.slice(1,3);
console.log( arr2 ); // 打印的结果是['b', 'c']
</script>
  1. splice的作用------可以插入,删除,替换数据------会改变原数组
javascript 复制代码
<script>
var arr1 = ['a','b','c','d','e'];
var arr2 = arr1.splice(1,1); //删除一个数据
console.log( arr2 ); // 返回的是操作的数据 打印的是['b']
console.log( arr1 ); // 饭回的是['a','c','d','e']
var arr3 = arr1.splice(1,1,'你好'); //将c替换为你好
</script>
  1. 数组去重
  1. new Set
javascript 复制代码
<script>
var arr1 = [1,2,2,3,4,1];
console.log( new Set(arr1) ); // 返回的是个对象
/* 利用ES6的Array.from把像数组的东西变成真正的数组 */
console.log( Array.from( new Set(arr1) ) );
/* 利用扩展运算符也可以达到一样的效果 */
console.log( [...new Set(arr1)] );
</script>
  1. indexOf
javascript 复制代码
<script>
var arr1 = [1,2,2,3,4,1];
function unique( arr ){
  var brr = [];
  for( var i=0; i<arr.length; i++){
    if(brr.indexOf(arr[i] == -1 ){
      brr.push( arr[i] );
    }
  }
  return brr;
};
unique( arr1 );
</script>
  1. sort
javascript 复制代码
<script>
var arr1 = [1,2,2,3,4,1];
function unique( arr ){
  arr = arr.sort();
  var brr = [];
  for(var i=0; i<arr.length; i++){
    if( arr[i] !== arr[i-1] ){
      brr.push( arr[i] )
    }
  }
  return brr
};
console.log( unique( arr1 ) );
</script>
  1. 找出多维数组中的最大值
javascript 复制代码
/* 分别找出每个小数组中的最大值并将它们串联起来形成一个新数组 */
<script>
var arr1 = [
  [4,5,1,3],
  [13,27,18,26],
  [32,35,37,39],
  [1000,1001,857,1]
]
function fun(arr){
  var newArr = [];
  arr.forEach((item, index) => {
    newArr.push( Math.max(...item) )
  })
  return newArr;
}
console.log( fun(arr1) ); // 最后打印出[5,27,39,1001]
</script>
  1. 给字符串新增方法实现功能
javascript 复制代码
/* 给字符串对象定义一个addPrefix函数,当传入一个字符串str时,它会返回新的带有指定前缀的字符串 */
/ * 例如 */
console.log("world".addPrefix("hello")) // 打印输出helloworld

<script>
String.prototype.addPrefix = function(str){
  return str + this;
}
'world'.addPrefix()
</script>
  1. 找出字符串出现次数最多的字符以及次数
javascript 复制代码
<script>
var str = 'aaabbbdddddddx';
var obj = {};
for (var i=0; i< str.length; i++){
  var char = str.charAt(i)
  if( obj[char] ){
    obj[char]++;
  }else{
    obj[char] = 1;
  }
}
console.log( obj ); // 此时的obj即是{'a':3, 'b':3, 'd':7, 'x':1}
/* 统计出最大值 */
var max = 0;
for (var key in obj){
  if(max < obj[key] ){
    max = obj [key]
  }
}
console.log(max); // 此时的max打印出来是7
// 找出最大值对应的key
for ( var key in obj ){
  if( obj[key] == max ){
    console.log('最多的字符是-----' + key);
    console.log('出现的次数是-----' + max);
  }
}
</script>
相关推荐
pe7er1 小时前
window管理开发环境篇 - 持续更新
前端·后端
We་ct2 小时前
LeetCode 5. 最长回文子串:DP + 中心扩展
前端·javascript·算法·leetcode·typescript
陈随易6 小时前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·后端·程序员
冰暮流星6 小时前
javascript之事件代理/事件委托
前端
@yanyu6667 小时前
登录注册功能-明文
vue.js·springboot
陈随易7 小时前
AI时代,你还在坚持手搓文章吗
前端·后端·程序员
里欧跑得慢9 小时前
17. Flutter Hero动画实现:让界面过渡更加优雅
前端·css·flutter·web
IT_陈寒10 小时前
Vue的这个响应式陷阱,我debug了一整天才爬出来
前端·人工智能·后端
cn_mengbei10 小时前
用React Native开发OpenHarmony应用:Reanimated共享元素过渡
javascript·react native·react.js
kyriewen10 小时前
前端测试:别为了100%覆盖率而写测试,那是自欺欺人
前端·javascript·单元测试