javascript对数据处理
数组去重
法一:
// 遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组
function unique(ar) {
var ret = []; for (var i = 0, j = ar.length; i < j; i++) {
if (ret.indexOf(ar[i]) === -1) {
ret.push(ar[i]);
}
} return ret;
}
法二:
//遍历数组,利用object对象保存数组值,判断数组值是否已经保存在object中,未保存则push到新数组并用object[arrayItem]=1的方式记录保存,这个效率比A高
function unique(ar) {
var tmp = {},
ret = []; for (var i = 0, j = ar.length; i < j; i++) {
if (!tmp[ar[i]]) {
tmp[ar[i]] = 1;
ret.push(ar[i]);
}
} return ret;
}
法三:
//ES6
const numbers = [1, 2, 1, 1, 2, 1, 3, 4, 1 ];
const uniq = [...new Set(numbers)] // => [ 1, 2, 3, 4 ];
const uniq2 = Array.from(new Set(numbers)) // => [ 1, 2, 3, 4 ];
法四:
//filter
function unique (arr) {
var res = arr.filter(function (item, index, array) {
return array.indexOf(item) === index; //array.indexOf(item) === index 说明这个元素第一次出现,后面这个item再出现他的item肯定不是index了
}) return res; }
根据属性删除数组中的一个对象
// 根据属性删除数组中的对象,利用filter进行过滤数组中id相同的项
const initial = [ {id: 1, score: 1}, {id: 2, score: 2}, {id: 3, score: 4}];
const removeId = 3;
const without3 = initial.filter(x => x.id !== removeId);
console.log(without3) // => [ { id: 1, score: 1 }, { id: 2, score: 2 } ]
删除一个对象上的属性(key)
//利用es6的 ...运算符将其他属性和a属性分开来,这波操作很亮眼 !
const obj = {a: 1, b: 2, c: 3};
const {a, ...newObj} = obj;
console.log(newObj) // => {b: 2, c: 3};
两个Set对象相减
//利用filter对s1进行过滤 ,去掉s2中存在的数字
const s1 = [ 1, 2, 3, 4, 5 ];
const s2 = [ 2, 4 ];
const subtracted = s1.filter(x => s2.indexOf(x) < 0);
console.log(subtracted);//[1,3,5]
同理这样是可以去出一个数组中指定的元素
//去掉s3中的2和4
const s3 = [ 1, 2, 3, 4, 5, 4, 5, 6, 2, 2, 4 ];
const s2 = [ 2, 4 ];
const subtracted1 = s3.filter(x => s2.indexOf(x) < 0); console.log(subtracted1); // [1, 3, 5, 5, 6]
判断一个单词是否是回文
//利用reverse 进行字符串反转,然后和原字符串对比是否相等
function isPalindrom(str) {
return str == str.split('').reverse().join('');
}
统计一个字符串出现最多的字母
//统计每个字母出现的次数,然后存起来,然后进行比较
function maxTimesChar(str) {
if(str.length == 1) {
return str;
}
let charObj = {};
for(let i=0;i<str.length;i++) {
if(!charObj[str.charAt(i)]) {
charObj[str.charAt(i)] = 1;
}else{
charObj[str.charAt(i)] += 1;
}
}
let maxChar = '',
maxValue = 1;
for(var k in charObj) {
if(charObj[k] >= maxValue) {
maxChar = k;
maxValue = charObj[k];
}
}
return maxChar; }
来源:http://www.cnblogs.com/mdengcc/p/7614601.html
javascript对数据处理的更多相关文章
- JavaScript 对数据处理的5个API
JavaScript对数据处理包括向上取整.向下取整.四舍五入.固定精度和固定长度5种方式,分别对应ceil,floor,round,toFixed,toPrecision等5个API,本文将对这5个 ...
- JavaScript JSON 数据处理
在JavaScript 也自带了 JSON 格式的处理 <!doctype html> <html> <script> var test_json_str = { ...
- javascript 大数据处理方法
随着前端的飞速发展,在浏览器端完成复杂的计算,支配并处理大量数据已经屡见不鲜.那么,如何在最小化内存消耗的前提下,高效优雅地完成复杂场景的处理,越来越考验开发者功力,也直接决定了程序的性能. 本文展现 ...
- ASP.Net:Javascript 通过PageMethods 调用后端WebMethod方法 + 多线程数据处理 示例
ASP.Net:Javascript 通过PageMethods 调用后端WebMethod方法 + 多线程数据处理 示例 2012年04月27日 16:59:16 奋斗的小壁虎 阅读数:4500 ...
- MOD 10,11算法(GB/T 17710-1999 数据处理 校验码系统 ),使用javascript实现
原文链接:http://chunniu.info/p/74.html GB/T 17710-1999 数据处理 校验码系统 ,便于使用,使用javascript做了一个页面 [php] var NUM ...
- Javascript的二进制数据处理学习 ——nodejs环境和浏览器环境分别分析
以前用JavaScript主要是处理常规的数字.字符串.数组对象等数据,基本没有试过用JavaScript处理二进制数据块,最近的项目中涉及到这方面的东西,就花一段时间学了下这方面的API,在此总结一 ...
- 前端基础 JavaScript~~~ 数据处理 奇技淫巧!!!!!!
常用的JS数据处理手段 2016-09-21 17:40:07 1. number类型 数组中取出里面的最大/最小值: // 数组中取出 最小值 [数值] var n ...
- [连载]JavaScript讲义(05)--- 数据处理
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamFja2ZydWVk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...
- JavaScript验证和数据处理的干货(经典)
在开发web项目的时候,难免遇到各种对网页数据的处理,比如对用户在表单中输入的电话号码.邮箱.金额.身份证号.密码长度和复杂程度等等的验证,以及对后台返回数据的格式化比如金额,返回的值为null,还有 ...
随机推荐
- DIV+CSS网页设计规范
1.网页HTML代码最前面必须包括W3C声明,以便符合标准: 一般网页: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition ...
- ASP.NET学习笔记(1)——VS自动引入命名空间快捷键
说明(2017-7-3 22:16:35) 1.在vs的“工具”->“选项”中,左侧树形菜单,“环境”下的“键盘”中设置快捷键. 在“显示命令包含”输入框内输入“显示智能标记”,找到“视图.显示 ...
- Maven 解决 下载项目 compiler 为1.5的问题
在 开发Maven 项目的时候,会发现个问题,就是下载下来的项目默认 compiler 为1.5 ,项目报错. 明明之前开发用的是1.7的啊. 这里只需要在pom.xml确定下就好了. <pro ...
- [转]Extjs中的迭代方法
原文地址:http://www.veryhuo.com/a/view/36701.html EXTJS 有很多的迭代方法,例如,你也许已知道的Ext.each,但还有另外一些不为人知且很有用的方法.首 ...
- APMServ升级php 与 Wamp升级PHP版本到5.3
方法一:(我亲测试,没问题)首先下载:php-5.3.1-Win32-VC6-x86.ziphttp://windows.php.net/downloads/releases/archives/ 解压 ...
- regsvr32.exe是什么东西
Regsvr32命令修复系统故障实例使用过activex的人都知道,activex不注册是不能够被系统识别和使用的,一般安装程序都会自动地把它所使用的activex控件注册,但如果你拿到的一个控件需要 ...
- 软件安装的list(0918)
勿忘国耻~ gcc-8.2.0 git-2.19.0 webbench-1.5 这个已经好久没有更新了
- C语言 · 校门外的树
算法提高 校门外的树 时间限制:1.0s 内存限制:256.0MB 问题描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的 ...
- C++中 explicit的用法
在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换. #include <iostream> using ...
- net-snmp 的配置
http://www.cnblogs.com/oloroso/p/4595123.html