JS数组(JSON)整合篇-方法整理
遍历:arr_Param.forEach(function (item, i) {});
反序排序:arr_Param.reverse();
合并数组:arr_Param.push.apply(arr_Param, ["a","b","c"]);
判断数组中是否每个元素都满足条件:arr.every(function(value,index,array){return 条件})
判断数组中是否至少有一个元素满足条件:arr.some(function(value,index,array){return 条件})
/*数组引用赋值*/
var a=[1,2,3];
var b=[];
//数组引用
b=a;
//数组赋值
b=[].concat(a);
/*按创建时间排序
字符串时间需转换Date.parse(a.time),IE下横杠替换为/ Date.parse(a.DataTime.replace(/-/g, '/'))
*/
//倒序
response.sort(function (a, b) {
return a.time<b.time?1:-1;
});
//升序
response.sort(function (a, b) {
return a.time>b.time?1:-1;
});
//Json数据排序
Array.prototype.SortJson = function (order, sortBy) {
var ordAlpah = (order == 'asc') ? '>' : '<';
var sortFun = new Function('a', 'b', 'return a.' + sortBy + ordAlpah + 'b.' + sortBy + '?1:-1');
return this.sort(sortFun);
};
//数组中判断是否存在某元素
Array.prototype.contains = function (needle) {
for (i in this) {
if (this[i] == needle) return true;
}
return false;
}
//数组中删除某指定值元素
Array.prototype.removeByValue = function (val) {
for (var i = 0; i < this.length; i++) {
if (this[i] == val) {
this.splice(i, 1);
//break;
}
}
}
//数组中删除某指定值元素(Jquery)
var arr = ['a','b','c','d'];
arr.splice($.inArray('c',arr),1);
alert(arr);
// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
}; /*示例*/
// 移除数组中的第二项
array.remove(1);
// 移除数组中的倒数第二项
array.remove(-2);
// 移除数组中的第二项和第三项(从第二项开始,删除2个元素)
array.remove(1,2);
// 移除数组中的最后一项和倒数第二项(数组中的最后两项)
array.remove(-2,-1);
JSON数据分组 来源:jb51
[
{"date":"2017-12-22","start_time":"10:00:00","end_time":"10:00:00","status":"Performance Time"},
{"date":"2017-12-22","start_time":"10:40:00","end_time":"10:40:00","status":"Performance Time"},
{"date":"2017-12-23","start_time":"10:00:00","end_time":"10:00:00","status":"Performance Time"},
{"date":"2017-12-23","start_time":"10:40:00","end_time":"10:40:00","status":"Performance Time"}
] //通用
var map = {},
nList = []
//遍历原始数组
for (var i = 0; i < arr.length; i++) {
var item = arr[i]
//如果map没有则在新nList中添加
if (!map[item.date]) {
nList.push({
date: item.date,
data: [item]
})
map[item.date] = item
} else {
//遍历nList
for (var j = 0; j < nList.length; j++) {
var nItem = nList[j]、
//如查找到date符合则添加
if (nItem.date == item.date) {
nItem.data.push(item)
//跳出循环
break
}
}
}
} //使用ES5特性
let map = {},
nList = []
arr.forEach((item) => {
if (!map[item.date]) {
nList.push({
date: item.date,
data: [item]
})
map[item.date] = item
} else {
//因为forEach不支持break,所以使用every实现
nList.every((nItem) => {
if (nItem.date === item.date) {
nItem.data.push(item)
return false
}
return true
})
}
}) //性能优化实践
//因数组中的date是按 顺序排列 ,而且没有重复,这样可以考虑 去除第二个循环
let map = {},
nList = []
//设置初始key为0
let _nkey = 0
arr.forEach((item, index) => {
if (index === 0) {
nList.push({
date: item.date,
data: [item]
})
} else {
let oItem = arr[index - 1]
//和前一个date一致则在当前添加,否则添加至nList
if (item.date === oItem.date) {
nList[_nkey]['data'].push(item)
} else {
nList.push({
date: item.date,
data: [item]
})
_nkey ++
}
}
})
JS数组(JSON)整合篇-方法整理的更多相关文章
- JS数组添加字典的方法
var ary_RoleType = []; //申明数组变量 for(var j = 0;j<treeData.length;j++){ if($.inArray(treeData[j].v ...
- js 数组常用的操作函数整理
平时多做企业应用开发,抱着实用为主,对前端技术理解得比较肤浅,下面就是肤浅地对 js 数组的属性和方法及对它操作的 jquery 方法做些记录: js 数组是 js 内建的一个非常强大数据类型,由于 ...
- js数组去重五种方法
今天来聊一聊JS数组去重的一些方法,包括一些网上看到的和自己总结的,总共5种方法(ES5). 第一种:遍历数组法 这种方法最简单最直观,也最容易理解,代码如下: var arr = [2, 8, 5, ...
- js 数组常用的一些方法
数组可以说是js经常会遇到的数据结构,以下我们对数组进行详细的学习! 一.数组的创建 var mycars = new Array(): || new Array(3); || new Array( ...
- JS数组中的indexOf方法
前言 这两天在家中帮朋友做项目,项目中使用了数组的indexOf 方法,找到了一篇文章,感觉非常不错,顺便整理下以防链接丢失. 相信说到 indexOf 大家并不陌生,判断字符串是否包涵子字符串时特别 ...
- 简单谈谈JS数组中的indexOf方法
前言 相信说到 indexOf 大家并不陌生,判断字符串是否包涵子字符串时特别常用,正则不熟练同学的利器.这篇文章就最近遇到的一个问题,用实例再说说说indexOf方法.本文是小知识点积累,不作为深入 ...
- JS 实现Json查询的方法实例
其实很简单,我这部分代码,前一部分是简单的实现如何使用JS写模板,第二个就是具体的实现了JSON查询的一个扩展. 以后查询Json就有了利器了. 代码如下: /* * 定义模板函数 ...
- Js数组的常用的方法概述
学习JS的同学们,也曾对数组进行学习掌握,所以我也把数组中常用的方法列举下来,相互学习 不多废话,直接上正文 . 快乐的分割线... 一.对象继承的方法 数组是一种特殊 ...
- js数组中的reverse()方法
reverse方法是将数组中的元素的顺序进行反转,在原数组上操作,然后返回原数组.由于本人是学习js的新人,对reverse函数进行了几个小实验,以下实验均在Chrome浏览器上运行 实验一:reve ...
随机推荐
- LA3971 组装电脑
思路:二分,就是在不超过b的预算下,使得品质的最小值最大化.关键还是判断函数吧. 假设答案为x,判断函数,就是每一个种类的配件的品质最基本的品质要大于x,然后找出最小的值.这样的配件品质之和的价格要小 ...
- 利用Python爬取网页图片
最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 我们这里以sogou作为爬取的对象. 首先我们进入搜狗图片 ...
- PHP+Mysql 实现数据库增删改查
PHP和Mysql可以对数据库进行简单的增删改查,本文介绍了新闻列表的后台管理. Mysql数据库创建 创建一个新闻列表的数据库: 1. 查询数据库 1.1. 创建文件dbconfig.php,保存常 ...
- Centos7安装配置Nginx
Nginx 安装 系统平台:CentOS 7.4 64位. 一,安装编译工具及文件 yum -y install make zlib zlib-devel gcc-c++ libtool openss ...
- 使用栈实现队列(1)(Java)
class MyQueue { private Stack s1; private Stack s2; public MyQueue(int size) { this.s1 = new Stack(s ...
- Cnario Player 接入视频采集卡采集外部音视频信号测试
测试产品 型号: TC-D56N1-30P采集卡 参数: 1* HDMI 1.4输入, PCIe 接口为PCI-Express x4(Gen2), 最高支持4096x2160@30Hz, 支持1920 ...
- mysql数据库中插入数据INSERT INTO SET的优势
往mysql数据库中插入数据.以前常用 INSERT INTO 表名 (列名1,列名2…) VALUES(列值1,列值2); 如果在PHP程序中,就会写成如下示例(往商品库里增加商品) $sql = ...
- HDU 6468 zyb的面试
http://acm.hdu.edu.cn/showproblem.php?pid=6468 题目 今天zyb参加一场面试,面试官听说zyb是ACMer之后立马抛出了一道算法题给zyb:有一个序列,是 ...
- CF 543C Remembering Strings
https://cn.vjudge.net/problem/CodeForces-543C 题目 You have multiset of n strings of the same length, ...
- TOP按钮
TOP按钮 博客园页面添加返回顶部TOP按钮 进入网页管理->设置 在"页面定制CSS代码"中添加如下css样式,当然你可以改为自己喜欢的样式 此处可以将背景色backgro ...