Javascript数组编程练习

简介: Javascript数组编程练习

1, 找出元素 item 在给定数组 arr 中的位置


输出描述: 如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1

输入例子: indexOf([ 1, 2, 3, 4 ], 3)

输出例子: 2

function indexOf(arr, item) {  
    for (var i=0; i<arr.length; i++) {    
        if(arr[i] === item) {      
            return i;
        } 
    } 
    return -1;
}
indexOf([1,2,3,4], 3);


2,题目描述计算给定数组 arr 中所有元素的总和


输入描述: 数组中的元素均为 Number 类型

输入例子: sum([ 1, 2, 3, 4 ])

输出例子: 10

function sum(arr) {    
    var s = 0;    
    for (var x in arr) {
        s += arr[x];
    }    
    return s;
}
sum([ 1, 2, 3, 4 ]);


3,移除数组 arr 中所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组


输入例子: remove([1, 2, 3, 4, 2], 2)

输出例子: [1, 3, 4]

function remove(arr, item) {
    var _arr = [];    
    for (var x in arr) {        
        if (arr[x] !== item) {
            _arr.push(arr[x]);
        }
    }
    return _arr;
}
remove([1, 2, 3, 4, 2], 2);


4, 移除数组 arr 中所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回


输入例子: removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2)

输出例子: [1, 3, 4]

function removeWithoutCopy(arr, item) {
    var len = arr.length;    
    for (var i = len-1; i >= 0; i--) {        
        if (arr[i] === item) {
            arr.splice(i, 1);
        }
    }    
    return arr;
}
removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2)


5,在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组


输入例子: append([1, 2, 3, 4], 10)

输出例子: [1, 2, 3, 4, 10]

function append(arr, item) {
    var _arr = slice(0);    
    return _arr.push(item);
}
append([1, 2, 3, 4],  10)


6,删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组


输入例子: truncate([1, 2, 3, 4])

输出例子: [1, 2, 3]

function truncate(arr) {    
    return arr.slice(0,-1)
}
truncate([1, 2, 3, 4])


7,在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组


输入例子: prepend([1, 2, 3, 4], 10)

输出例子: [10, 1, 2, 3, 4]

function prepend(arr, item) {
    var _arr = [item]    
    return _arr.concat(arr);
}
prepend([1, 2, 3, 4], 10)


8,删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组


输入例子: curtail([1, 2, 3, 4])

输出例子: [2, 3, 4]

function curtail(arr) {
    var _arr = arr.slice(0)    
    return _arr.slice(1)
}
curtail([1, 2, 3, 4])


9,合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组


输入例子: concat([1, 2, 3, 4], ['a', 'b', 'c', 1])

输出例子: [1, 2, 3, 4, 'a', 'b', 'c', 1]

function concat(arr1, arr2) {
    var _arr = arr1.concat(arr2)    
    return _arr
}
concat([1, 2, 3, 4], ['a', 'b', 'c', 1])



10, 在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组


输入例子: insert([1, 2, 3, 4], 'z', 2)

输出例子: [1, 2, 'z', 3, 4]

function insert(arr, item, index) {
    var _arr = arr.slice(0);    
    //0 为要删除的个数, item为向数组添加新的项
    _arr.splice(index, 0 ,item);    
    return _arr;
}
insert([1, 2, 3, 4], 'z', 2)


11,统计数组 arr 中值等于 item 的元素出现的次数


输入例子: count([1, 2, 4, 4, 3, 4, 3], 4)

输出例子: 3

function count(arr, item) {
    var c = 0;    
    for (var x in arr) {        
        if (arr[x] == item) {
            c += 1;
        }
    }   
    return c;
}
count([1, 2, 4, 4, 3, 4, 3], 4)


12,找出数组 arr 中重复出现过的元素


输入例子: duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort()

输出例子: [1, 3, 4]

function duplicates(arr) {
    var a = [];    
    for(var i=0; i<arr.length; i++) {        
        for(var j=i+1;j<arr.length;j++){
            arr[i]==arr[j]&&a.indexOf(arr[i])==-1&&a.push(arr[i]);
        }
    }    
    return a;
}
duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort((i,j) => {return i-j;} )


13,为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组


输入例子: square([1, 2, 3, 4])

输出例子: [1, 4, 9, 16]

function square(arr) {
    var _arr = arr.slice(0);
    return _arr.map(item => item * item)
}
square([1, 2, 3, 4])


14, 在数组 arr 中,查找值与 item 相等的元素出现的所有位置


输入例子: findAllOccurrences('abcdefabc', 'a').sort()

输出例子: [0, 6]

function findAllOccurrences(str, target) {    
    var arr = str.split('');    
    var _arr = [];
    arr.map((item, index) => {
        item === target && _arr.push(index)
    })    
    return _arr;
}
findAllOccurrences('abcdefabc', 'a').sort((i,j) => {return i-j;})

目录
相关文章
|
13天前
|
JavaScript 前端开发 编译器
解锁JavaScript模块化编程新纪元:从CommonJS的基石到ES Modules的飞跃,探索代码组织的艺术与科学
【8月更文挑战第27天】随着Web应用复杂度的提升,JavaScript模块化编程变得至关重要,它能有效降低代码耦合度并提高项目可维护性及扩展性。从CommonJS到ES Modules,模块化标准经历了显著的发展。CommonJS最初专为服务器端设计,通过`require()`同步加载模块。而ES Modules作为官方标准,支持异步加载,更适合浏览器环境,并且能够进行静态分析以优化性能。这两种标准各有特色,但ES Modules凭借其更广泛的跨平台兼容性和现代语法逐渐成为主流。这一演进不仅标志着JavaScript模块化的成熟,也反映了整个JavaScript生态系统的不断完善。
31 3
|
22天前
|
JavaScript 前端开发 索引
JS遍历数组里数组下的对象,根据数组中对象的某些值,组合成新的数组对象
这篇文章介绍了如何在JavaScript中遍历数组里数组下的对象,并根据对象的某些属性值组合成一个新的数组对象。主要内容包括使用ES6的`for...of`循环来遍历数组对象,然后根据需要提取对象中的属性值,并将它们放入新的对象中,最终形成一个新的对象数组以供使用。
|
17天前
|
前端开发 JavaScript 开发者
【前端开发者的福音】彻底改变你编码习惯的神奇数组迭代技巧——从基础到进阶,解锁 JavaScript 数组迭代的N种姿势!
【8月更文挑战第23天】在Web前端开发中,数组是JavaScript中最常用的数据结构之一,掌握高效的数组迭代方法至关重要。本文详细介绍了多种数组迭代技巧:从基础的`for`循环到ES6的`for...of`循环,再到高阶方法如`forEach`、`map`、`filter`、`reduce`及`some`/`every`等。这些方法不仅能提高代码的可读性和维护性,还能有效优化程序性能。通过具体的示例代码,帮助开发者更好地理解和运用这些迭代技术。
24 0
|
6天前
|
JavaScript 前端开发
JavaScript基础知识-数组的遍历
关于JavaScript数组遍历基础知识的文章。
17 2
JavaScript基础知识-数组的遍历
|
6天前
|
JavaScript 前端开发
JavaScript基础知识-数组的练习
关于JavaScript基础知识中数组操作的练习,主要介绍了如何从一个包含Person对象的数组中过滤出成年人(年龄达到18岁及以上)并将他们放入一个新的数组中。
15 1
JavaScript基础知识-数组的练习
|
6天前
|
JavaScript 前端开发
JavaScript基础知识-数组的常用方法
关于JavaScript基础知识-数组的常用方法。
9 1
JavaScript基础知识-数组的常用方法
|
6天前
|
JavaScript 前端开发 索引
JavaScript基础知识-数组基于索引访问
关于JavaScript数组基于索引访问的基础知识介绍。
10 1
JavaScript基础知识-数组基于索引访问
|
6天前
|
JavaScript 前端开发
JavaScript基础知识-数组的定义方式
本文介绍了JavaScript中数组的多种定义方式。
8 1
JavaScript基础知识-数组的定义方式
|
2天前
|
存储 JavaScript 前端开发
JS中的数组有哪些常用操作函数和属性
【9月更文挑战第7天】JS中的数组有哪些常用操作函数和属性
8 1
|
11天前
|
JavaScript 前端开发 UED
JavaScript代码技巧大分享,在数组中去重元素
本文介绍了一系列实用的JavaScript函数,包括将内容复制到剪贴板、获取鼠标选中内容、打乱数组顺序、颜色值转换(RGBA与十六进制)、计算平均值、判断奇偶数、数组去重、检查空对象、反转字符串、计算日期间隔、首字母大写、生成随机字符串和随机数等,帮助提升网站的用户体验和功能丰富性。
18 4