前段时间去了一个公司面试,做题过程中遇到这么一个JS题目“如何消除数组中重复的元素”。我的JS是很菜的,当时回答得有些勉强,具体思路是这样的,双层循环,逐个判断,不重复则push进一个新的数组,最后返回新数组。下面是具体的js代码:
function getNewArr(oldArr){
if(typeof oldArr != "object") return oldArr;
var newArr = [];
var oldArrLen = oldArr.length-1, newArrLen = -1, flag = false;
for(var i=oldArrLen; i>=0; i--){
flag = false;
for(var j=newArrLen; j>=0; j--){
if(oldArr === newArr[j]){
flag = true;
break;
}
}
if(!flag) newArrLen = newArr.push(oldArr)-1;
}
return newArr;
}
也许这个方法对于小型数组是可行的,但是对于一些大型的数组,我想效率可能会直线下降,但是我暂时只能想到这么做,悲催啊。
关于判断相等那里,我使用了全等“===”,是考虑到JS数组中存放的字段类型不确定,举个简单的例子:
JS中 “123”==123 结果会返回true,这里的操作其实是JS自身转换过的,故对于js这样的弱类型语言,双等用在这里我感觉不是很合适,所以我使用了全等“===”,即“123”===123 会返回false。
也许这里还会有更好,更效率快捷的方法,如果你知道,请留言讨论,谢谢!
分享到:
相关推荐
### 常见数组面试题解析 #### 一、数组求和 **题目描述:** 使用递归方式实现数组求和,并且要求整个函数只使用一行代码。 **解答:** ```cpp int sum(int* a, int n) { return n == 0 ? 0 : sum(a, n - 1) + a...
JavaScript 数组面试题
java基础面试题数组中重复的数字本资源系百度网盘分享地址
数组 - 需要参加面试的人
根据给定的文件信息,以下是对每一道JS面试题的知识点进行详细解析: ### 第一题:编写一个方法求一个字符串的字节长度 #### 解析: 在这道题目中,我们需要编写一个函数来计算字符串的字节长度。这里的重点在于...
### JavaScript面试题解析 #### 一、ES6的新语法 ES6(ECMAScript 6)是JavaScript语言标准的一个重要版本,它引入了许多新的特性和语法改进,旨在提高开发效率和代码可读性。以下是一些重要的新特性: 1. **let ...
JavaScript面试题汇总涵盖了广泛的知识点,以下是其中一些关键点的详细说明: 1. **变量声明**:在JavaScript中,可以使用var关键字声明变量。在给定的题目中,选项A `( )` 是一个无效的声明,因为没有提供任何值,...
为了提高 JavaScript 的性能,需要遵循严格模式、将 js 脚本放在页面底部、将 js 脚本将脚本成组打包、使用非阻塞方式下载 js 脚本、尽量使用局部变量来保存全局变量、尽量减少使用闭包、使用 window 对象属性方法时...
8. **找出数组中唯一的重复元素**: 可以使用“快慢指针”(龟兔赛跑)的方法,找到数组中的环,环的起始位置即为重复元素。 9. **找出出现奇数次的元素**: 所有元素异或一次,得到的结果就是出现奇数次的元素,...
第34题,"在排序数组中查找元素的第一个和最后一个位置",是这样一类问题:它不仅测试了基本的数组操作,还涉及到二分查找的高级应用。下面我们将详细探讨这个问题以及相关的知识点。 ### 问题描述 给定一个已排序...
"JavaScript面试题集锦详解" 这篇文章涵盖了JavaScript的多个方面,包括eval函数、window和document对象、null和undefined的区别、数组的map方法、事件机制、use strict模式等。 eval函数 eval函数可以将字符串...
剑指offer面试题库中第三题的C语言代码。在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
数组是一种连续存储的数据结构,即数组中的元素在内存中是连续存储的。这使得数组在查找数据时效率非常高,因为内存地址是连续的。然而,数组也存在一些缺点: * 需要在存储之前申请一块连续的内存空间,并且在编译...
java面试 Java面试_leetcode题解之第442题数组中重复的数据
JavaScript是一种广泛应用于Web开发的...以上是对这套JavaScript面试题的解析,涵盖的知识点全面,适合准备JavaScript面试的开发者进行自我检测和学习。理解并掌握这些知识点,对于提升JavaScript编程能力大有裨益。
本篇文章将详细探讨文档中提及的几个经典的JavaScript数组算法面试题。 首先,我们来看第一个问题:求斐波那契数列的前20个数字。斐波那契数列是一个序列,其中每个数字是前两个数字的和。数学上,它可以通过递归...
本资源摘要信息汇总了前端JS面试题中的一些重要知识点,涵盖了JQuery选择器、JQuery插件实现方式、bind和live方法的区别、JS和JQ对象的转换、去除数组重复项等内容。 一、JQuery选择器 JQuery选择器是JQuery库中最...
这份"js面试技巧,面试题总结,MK"文档显然包含了作者在学习过程中整理的JS面试重点和常见问题,对于准备JS面试或者巩固基础知识的人来说是一份宝贵的资料。 在JS面试中,以下知识点经常会被考察: 1. **基础概念*...
标题中的“java面试-leetcode面试题解之第34题在排序数组中查找元素的第一个和最后一个位置-java题解”指的是一个关于Java编程的面试准备资料,特别针对LeetCode的第34题。LeetCode是一个在线平台,提供各种编程挑战...
数组高频面试题精讲