编程题
目录
数组中找重复
题目描述
找出数组 arr 中重复出现过的元素
输入例子:
duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort()
输出例子:
[1, 3, 4]
解法一:
function duplicates(arr) {
return arr.sort(function(a,b){
return a - b;
}).filter(function(item,index,array){
return arr[index] === arr[index+1] && arr[index] !== arr[index - 1];
});
}
解法二:
function duplicates(arr) {
var a=arr.sort(function(a,b){
return a - b;
});
var b=[];
for(var i in a){
if(a[i]==a[i-1] && b.indexOf(a[i])==-1) b.push(a[i]);
}
return b;
}//先排序,如果后一个与前一个相等且未保存,则保存。
数组中某元素位置
题目描述
在数组 arr 中,查找值与 item 相等的元素出现的所有位置
输入例子:
findAllOccurrences('abcdefabc'.split(''), 'a').sort()
输出例子:
[0, 6]
解法一:
function findAllOccurrences(arr, target) {
var result= [];
idx = arr.indexOf(target);
while(idx !== -1){
result.push(idx);
idx = arr.indexOf(target, ++idx);
}
return result;
}
解法二:
查找target的位置,只需要将数组arr中键值对key-value中value == target的key找出来存到新数组而已。因此,遍历arr,如果target == arr[i],i即目标值位置,则将i加入到a数组中。
function findAllOccurrences(arr, target) {
var a = [];
for(var i = 0; i < arr.length; i++){
if(target == arr[i])
a.push(i);
}
return a;
}
函数定义规范
题目描述
请修复给定的 js 代码中,函数定义存在的问题
输入例子:
functions(true)
输出例子:
a
需要改进的代码
function functions(flag) {
if (flag) {
function getValue() { return 'a'; }
} else {
function getValue() { return 'b'; }
}
return getValue();
}
上面这种写法,存在兼容性问题,不同浏览器会不同的解析。
function表示定义,会在所有代码执行前执行定义。有的浏览器可能就会因getValue被重写。
(var、function都代表定义。)
改进一:
function functions(flag) {
function getValue() { return(flag)?'a':'b'; }
return getValue();
}
改进二:
else中的语句相当于将if中的function重写,因此无论flag为何值,返回的方法始终为重写后的方法。将方法赋值给一个变量,方法就不会被重写,因此才能得到正确的结果。
function functions(flag) {
if (flag) {
var getValue = function () { return 'a'; }
} else {
var getValue = function () { return 'b'; }
}
return getValue();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix