如何在JavaScript中等分数组的实现


Posted in Javascript onDecember 13, 2020

最近开源了一个 Vue 组件,还不够完善,欢迎大家来一起完善它,也希望大家能给个 star 支持一下,谢谢各位了。

github 地址:https://github.com/qq449245884/vue-okr-tree

在本教程中,我们来学习一下如何使用Array.splice()方法将数组等分,还会讲一下,Array.splice() 和 Array.slice() 它们之间的不同之处。

1. 将数组分为两个相等的部分

我们可以分两步将数组分成两半:

使用length/2和Math.ceil()方法找到数组的中间索引

使用中间索引和Array.splice()方法获得数组等分的部分

Math.ceil() 函数返回大于或等于一个给定数字的最小整数。

const list = [1, 2, 3, 4, 5, 6];
const middleIndex = Math.ceil(list.length / 2);

const firstHalf = list.splice(0, middleIndex);  
const secondHalf = list.splice(-middleIndex);

console.log(firstHalf); // [1, 2, 3]
console.log(secondHalf); // [4, 5, 6]
console.log(list);    // []

Array.splice() 方法通过删除,替换或添加元素来更改数组的内容。 而 Array.slice() 方法会先对数组一份拷贝,在操作。

  • list.splice(0, middleIndex) 从数组的0索引处删除前3个元素,并将其返回。
  • splice(-middleIndex)从数组中删除最后3个元素并返回它。

在这两个操作结束时,由于我们已经从数组中删除了所有元素,所以原始数组是空的。

另请注意,在上述情况下,元素数为偶数,如果元素数为奇数,则前一半将有一个额外的元素。

const list = [1, 2, 3, 4, 5];
const middleIndex = Math.ceil(list.length / 2);

list.splice(0, middleIndex); // returns [1, 2, 3]
list.splice(-middleIndex);  // returns [4, 5]

2.Array.slice 和 Array.splice

有时我们并不希望改变原始数组,这个可以配合 Array.slice() 来解决这个问题:

const list = [1, 2, 3, 4, 5, 6];
const middleIndex = Math.ceil(list.length / 2);

const firstHalf = list.slice().splice(0, middleIndex);  
const secondHalf = list.slice().splice(-middleIndex);

console.log(firstHalf); // [1, 2, 3]
console.log(secondHalf); // [4, 5, 6]
console.log(list);    // [1, 2, 3, 4, 5, 6];

我们看到原始数组保持不变,因为在使用Array.slice()删除元素之前,我们使用Array.slice()复制了原始数组。

3.将数组分成三等分

const list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const threePartIndex = Math.ceil(list.length / 3);

const thirdPart = list.splice(-threePartIndex);
const secondPart = list.splice(-threePartIndex);
const firstPart = list;   

console.log(firstPart); // [1, 2, 3]
console.log(secondPart); // [4, 5, 6]
console.log(thirdPart); // [7, 8, 9]

简单解释一下上面做了啥:

  • 首先使用st.splice(-threePartIndex)提取了ThirdPart,它删除了最后3个元素[7、8、9],此时list仅包含前6个元素[1、2、3、4、5、6] 。
  • 接着,使用list.splice(-threePartIndex)提取了第二部分,它从剩余list = [1、2、3、4、5、6](即[4、5、6])中删除了最后3个元素,list仅包含前三个元素[1、2、3],即firstPart。

4. Array.splice() 更多用法

现在,我们来看一看 Array.splice() 更多用法,这里因为我不想改变原数组,所以使用了 Array.slice(),如果智米们想改变原数组可以进行删除它。

const list = [1, 2, 3, 4, 5, 6, 7, 8, 9];

获取数组的第一个元素

list.slice().splice(0, 1) // [1]

获取数组的前5个元素

list.slice().splice(0, 5) // [1, 2, 3, 4, 5]

获取数组前5个元素之后的所有元素

list.slice().splice(5) // 6, 7, 8, 9]

获取数组的最后一个元素

list.slice().splice(-1)  // [9]

获取数组的最后三个元素

list.slice().splice(-3)  // [7, 8, 9]

到此这篇关于如何在JavaScript中等分数组的实现的文章就介绍到这了,更多相关JavaScript 等分数组内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
将jQuery应用于login页面的问题及解决
Oct 17 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
Dec 08 Javascript
jquery星级插件、支持页面中多次使用
Mar 25 Javascript
深入理解JavaScript高级之词法作用域和作用域链
Dec 10 Javascript
javascript密码强度校验代码(两种方法)
Aug 10 Javascript
jquery+CSS3实现3D拖拽相册效果
Jul 18 Javascript
Node调用Java的示例代码
Sep 20 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
Oct 29 Javascript
在Vue项目中使用snapshot测试的具体使用
Apr 16 Javascript
layui操作列按钮个数和文字颜色的判断实例
Sep 11 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
Sep 14 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
Jan 16 Javascript
使用Mock.js生成前端测试数据
Dec 13 #Javascript
javascript实现滚轮轮播图片
Dec 13 #Javascript
swiper实现导航滚动效果
Dec 13 #Javascript
swiperjs实现导航与tab页的联动
Dec 13 #Javascript
Vue实现简单购物车功能
Dec 13 #Vue.js
javascript前端实现多视频上传
Dec 13 #Javascript
vue使用element-ui实现表单验证
Dec 13 #Vue.js
You might like
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
CI框架装载器Loader.php源码分析
2014/11/04 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
Extjs学习笔记之一 初识Extjs之MessageBox
2010/01/07 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
javascript轮播图算法
2016/10/21 Javascript
js返回顶部实例分享
2016/12/21 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
js实现盒子滚动动画效果
2020/08/09 Javascript
利用Python爬取可用的代理IP
2016/08/18 Python
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
python 表格打印代码实例解析
2019/10/12 Python
python字符串常用方法及文件简单读写的操作方法
2020/03/04 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
python实现感知机模型的示例
2020/09/30 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
自我鉴定范文300字
2013/10/01 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
《美丽的小路》教学反思
2014/02/26 职场文书
小学生综合素质评语
2014/04/23 职场文书
环保建议书400字
2014/05/14 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
学雷锋日活动总结
2015/02/06 职场文书
歌咏比赛主持词
2015/06/29 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
html5实现点击弹出图片功能
2021/07/16 HTML / CSS
Vue h函数的使用详解
2022/02/18 Vue.js