1、实现数组的去重:

  1.1、方法一:

let arr = [{id: 1, name: 'aa'},  {id: 2, name: 'bb'}, {id: 3, name: 'cc'}, {id: 4, name: 'dd'}, {id: 5, name: 'ee'}, {id: 1, name: 'aa'}, {id: 1, name: 'aa'}, {id: 1, name: 'aa'}, {id: 1, name: 'aa'}];

function unique(array) {
const res = new Map();
return array.filter((arr) => !res.has(arr.id) && res.set(arr.id, 1)); //用列表的id判断是否有重复
} unique(arr);

  1.2、方法二:

let hash = {},
arr = [{id: 1, name: 'aa'}, {id: 2, name: 'bb'}, {id: 3, name: 'cc'}, {id: 4, name: 'dd'}, {id: 5, name: 'ee'}, {id: 1, name: 'aa'}, {id: 1, name: 'aa'}, {id: 1, name: 'aa'}, {id: 1, name: 'aa'}]; const newArr = arr.reduceRight((item, next) => {
hash[next.id] ? '' : hash[next.id] = true && item.push(next);
return item;
}, []); console.log(newArr);

2、实现数组的过滤:

let arr = [{id: 1, name: 'aa'},  {id: 2, name: 'bb'}, {id: 3, name: 'cc'}, {id: 4, name: 'dd'}, {id: 5, name: 'ee'}];

function filter(arrayList, id) {
let temp = arrayList.filter((list) => {
if(list.id === id) { //过滤列表id等于id值,相反也可以用"!=="来过滤不等于id值的列表
return list;
}
});
return temp;
} filter(arr, 1);  

3、数组的相同属性值的合并:

let a = [{id: 1, name: 'a'}, {id: 2, name: 'b'}, {id: 1, name: 'c'},{id: 3, name: 'd'}, {id: 2, name: 'e'}, {id: 4, name: 'f'}];

let b = a.reduce((memo, {id, name}) => {
!memo[id] ? memo[id] = name : memo[id] += name;
return memo;
}, {});  //{1: "ac", 2: "be", 3: "d", 4: "f"}

4、数组的扁平化:

function convert(val) {
return val.reduce((init, next) => {
if(typeof next === 'object') {
next.forEach(item => {
if(typeof item === 'object') {
init = init.concat(convert(item));
} else {
init.push(item);
}
});
} else {
init.push(next);
}
return init;
}, [])
} Array.from(new Set(convert([1, 2, [3, 2, 1, [1, 2, 3, 4]]]))); //[1, 2, 3, 4]

5、摘取数组对象的某几个字段:

var arr = [
{
'id': '1',
'name': 'img1',
'imgUrl': './img1.jpg',
},
{
'id': '2',
'name': 'img2',
'imgUrl': './img2.jpg',
},
{
'id': '3',
'name': 'img3',
'imgUrl': './img3.jpg',
}
];
arr.map(x => {return {'imgUrl': x.imgUrl, 'name': x.name}})

6、两个数组拼接成对象数组:

  方法一:

let metrodates = ['2008-01', '2008-02', '2008-03'];
let figures = [0, 0.555, 0.293];
let output = metrodates.map((date, i) =>({date, data: figures [i]}));
console.log(output); //[{date: "2008-01", data: 0}, {date: "2008-02", data: 0.555}, {date: "2008-03", data: 0.293}]

  方法二:

const zip = ([x, ...xs],  [y, ...ys]) => {
if(x === undefined || y === undefined)
return [];
else
return [[x, y], ...zip(xs, ys)];
}
let metrodates = ['2008-01', '2008-02', '2008-03'];
let figures = [0, 0.555, 0.293];
let output = zip(metrodates, figures).map(([date, data]) =>({date, data}));
console.log(output); //[{date: "2008-01", data: 0}, {date: "2008-02", data: 0.555}, {date: "2008-03", data: 0.293}]

  方法三:

const isEmpty = xs => xs.length === 0;
const head =([x, ...xs]) => x;
const tail =([x, ...xs]) => xs;
const map = (f, ...xxs) => {
let loop = (acc, xxs) => {
if(xxs.some(isEmpty))
return acc;
else
return loop([...acc, f(...xxs.map(head))], xxs.map(tail));
};
return loop([], xxs);
};
let metrodates = ['2008-01', '2008-02', '2008-03'];
let figures = [0, 0.555, 0.293];
let output = map((date, data) =>({date, data}), metrodates, figures);
console.log(output);

es6 实现数组的操作的更多相关文章

  1. es6常用数组操作及技巧汇总

    定义数组 const array = [1, 2, 3]; // 或者 const array = new Array(); array[0] = '1'; 检测数组 Array.isArray([] ...

  2. ES6 二进制数组

    二进制数组(ArrayBuffer对象.TypedArray视图和DataView视图)是JavaScript操作二进制数据的一个接口.这些对象早就存在,属于独立的规格(2011年2月发布),ES6将 ...

  3. 微信小程序setData()方法的详解以及对数组/json操作

    此篇文章是本人对setData方法的一些理解,是查阅文档和查找一些其他资料综述的,有所不足希望指正! 直接进入正题! 一.setData()方法: 1.参数接受一个对象,以key,value的形式表示 ...

  4. ES6定型数组

    前面的话 定型数组是一种用于处理数值类型(正如其名,不是所有类型)数据的专用数组,最早是在WebGL中使用的,WebGL是OpenGL ES 2.0的移植版,在Web 页面中通过 <canvas ...

  5. JavaScript数组常见操作

    JavaScript数组常见操作 Tip: 右键在新标签中打开查看清晰大图 下面介绍JavaScript中的数组对象遍历.读写.排序等操作以及与数组相关的字符串处理操作 创建数组 一般使用数组字面量[ ...

  6. 数组去重----es6&es5&数组对象去重

    es6方法: 普通数组: 1.使用Array.from(new Set(arr)); /* * @param oldArr 带有重复项的旧数组 * @param newArr 去除重复项之后的新数组 ...

  7. JS 数组常见操作汇总,数组去重、降维、排序、多数组合并实现思路整理

    壹 ❀ 引 JavaScript开发中数组加工极为常见,其次在面试中被问及的概率也特别高,一直想整理一篇关于数组常见操作的文章,本文也算了却心愿了. 说在前面,文中的实现并非最佳,实现虽然有很多种,但 ...

  8. JavaScript jQuery 中定义数组与操作及jquery数组操作

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

  9. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

随机推荐

  1. [ 随手记 2 ] C/C++ 数组/指针/传数组到函数/指针数组/数组指针

    1.=================================================================== 1,数组是一块内存连续的数据.2,指针是一个指向内存空间的变 ...

  2. 《HTTP权威指南》读书笔记(二) :URL与资源

    1.URL是什么 URL就是因特网资源的标准化名称.URL指向一条电子信息片段,告诉你它们位于何处,以及如何与之交互.通俗来说,就是浏览器寻找信息所需的资源位置. URI是一类更通用的资源标识符,UR ...

  3. 输入框VS软键盘

    最近在做一个h5的时候遇到的问题 我们都知道当页面上的有输入框被选中了,这个时候就回调出键盘用户可以输入.但是安卓手机在弹出键盘时页面的输入框也会被覆盖住: 以下为暂时的解决办法:(以下方法同时解决了 ...

  4. ES6的一些知识学习

    一.基础 ES6 - 类: class A{ constructor(name,color){ this.name = name; this.color = color; } toString(){ ...

  5. react安装

    1. npm install -g create-react-app 2. create-react-app my-app 3. cd my-app npm start 4.浏览器打开  http:/ ...

  6. spring-aop思想实践demo

    需求: 例如我们需要有一个类中每个方法执行前都需要做一个权限校验,必须是有特定权限的账号才能完成该方法的操作. 解决方案: 1.使用父类继承方式,书写该类的父类,然后在父类中定义一个checkPri的 ...

  7. python入门——热量转换 I

    热量转换 I 描述 卡路里,简称卡(Calorie),缩写为cal,定义为在1个大气压下,将1克水提升1摄氏度所需要的热量,卡是能量单位,被广泛使用在营养计量方面.国际能量标准单位是焦耳(joule) ...

  8. C++ 实数类

    这是一堆我自己写完都怀疑人生的代码. 或许我见识太少了吧-- 实现一个实数类.这个类也可以看作是分数类.实现了基本的四则运算和比较.另外,与整数或小数的转换还没有实现,无限循环小数转分数也暂时没有实现 ...

  9. 通过localhost访问和通过IP地址访问页面CSS样式不一样

    在开发ICT项目管理系统时,发现在开发环境下看到的页面和在部署环境下看到的页面不一样.开发环境下看到的页面比较舒服,部署后看到的页面比较生涩.究其原因,发现地址栏里面一个是localhost,一个是I ...

  10. CentOS7.5 安装MySQL8 tar

    1.查看是否安装mariadb 执行命令: [root@mysql ~]# rpm -qa | grep mariadb 显示: mariadb-libs-5.5.56-2.el7.x86_64 2. ...