js 数组转换操作

1、ES6语法find查找匹配数组
let data = [
    {id:1,value:false},
    {id:2,value:false},
    {id:3,value:false}
];
let id = 3

let  findVal = data.find(item => {
    return item.id === id
})
findVal.value = true; //修改匹配项的值
2、ES6 findIndex 对象数组查找某一个对象
  • findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置
  • findIndex()方法为数组中的每个元素都调用一次函数执行
  • 当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用 执行函数。 如果没有符合条件的元素返回 -1
let arr = [{
	name: '小王',
	age: 14
},{
	name: '大王',
	age: 41
},{
	name: '老王',
	age: 61
}]	

function fn(obj, objIndex, objs){
	return num.age > 20;
}

console.log(arr.findIndex(fn)) //值为1(即大王的下标)
3、数组转字符串
let arr = [1,2,3,4,'merge']
let str = arr.join(',')
console.log(str); // 1,2,3,4,merge


let a = [1,2,3,4,5,6,7,8,9,0];  //定义数组
let s = a.toString();  //把数组转换为字符串,默认用 ','来连接各个元素
console.log(s);  //返回字符串“1,2,3,4,5,6,7,8,9,0”
console.log(typeof s);  //返回字符串string,说明是字符串类型

let a = [1,[2,3],[4,5]],[6,[7,[8,9],0]]];  //定义多维数组
let s = a.toString();  //把数组转换为字符串
console.log(S);  //返回字符串“1,2,3,4,5,6,7,8,9,0”

数组转字符串:
String[] arr = { "0", "1", "2", "3", "4", "5" };
// 遍历
StringBuffer str5 = new StringBuffer();
for (String s : arr) {
    str5.append(s);
}
System.out.println(str5.toString()); // 012345
4、字符串转数组
let str = '1,2,3,4'
let arr = str.split(',')
console.log(arr)     // ["1", "2", "3", "4"] 
5、字符串转数组,数组转数组格式化,数组格式化转数组
let str = '1,2,3,4';
let arr = str.split(',');
let strify = JSON.stringify(arr);
console.log(arr);       // ["1", "2", "3", "4"]   数组
console.log(strify);    // ["1", "2", "3", "4"]   字符串

let arrParse = JSON.parse(strify);
console.log(arrParse);  // ["1", "2", "3", "4"]   数组
6、数组入列,出列,出栈,入栈
let arr = ['1','2','3','4','5']
console.log (arr.pop());
数组出栈, 方法用于删除并返回数组的最后一个元素,改变原数组。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值
console.log (arr.push('我是被添加进来的'));
数组入栈,push有返回值,返回数组的新长度
console.log (arr.shift());
数组出列,方法用于把数组的第一个元素从其中删除,并返回第一个元素的值,改变原数组。
console.log (arr.unshift('我是被放在后面的'));
数组入列,也有返回值,返回数组的新长度

7、数组颠倒、截取、删除后添加、排序
arr.reverse() // 将数组反序 
arr.slice(1,3)
arr.splice(0,1,'我是删除后添加的新元素')
sort(orderfunction):按指定的参数对数组进行排序 

若 a 小于 b,即 a - b 小于零,则返回一个小于零的值,数组将按照升序排列。
若 a 等于 b,则返回 0。
若 a 大于 b, 即 a - b 大于零,则返回一个大于零的值,数组将按照降序排列。

let a = function (a,b)
 {
    return a-b;
 }
var arr=[6,2,3,4,5,10,20,65,25];
console.log(arr.sort(a));


slice可以接受一个或两个参数(start,end)开始位置和结束位置。这个方法用于从数组中截取参数,当然不改变原数组。例如:

var  num=[1,2,3,4,5];
      num.slice(2,4);//[3,4];
      console.log(num);//[1,2,3,4,5]

splice这个方法有三种使用方式(改变数组)

1.删除    两个参数 start,length 即开始位置和删除的长度
2.插入    三个参数  start,length(删除),content(要插入的内容)
3.替换(也可以叫做删除后插入)同样是三个参数

例子如下:
var num=[1,2,3,4];
var del=num.splice(0,2);//  [1,2]
console.log(num);//[3,4];

var insert=num.splice(1,0,"5","6");//返回空 第二参数是0
console.log(num);//[3,5,6,4]

var change=num.splice(1,1,"7","8");//[5]
console.log(num);//[3,7,8,6,4]


注意:slice影响原数组,splice不影响原数组

按照数组对象中某个属性值进行排序按照数组对象中某个属性值进行排序在这里插入图片描述
根据参数来确定是升序还是降序根据参数来确定是升序还是降序

8、对象数组拆分
let source_arr = [{"早上":5,"中午":1608,"晚上":357,"中午和晚上":217}];
 ||                    
let out_arr =  [{name:"早上",value:5},{name:"中午",value:1608},{name:"晚上",value:357},{name:"中午和晚上",value:217}];
<script type="text/javascript">
 
let source_arr = [{"早上":5,"中午":1608,"晚上":357,"中午和晚上":217}]

//  [{"早上":5,"中午":1608,"晚上":357,"中午和晚上":217}]
//  [{name:"早上",value:5},{name:"中午",value:1608},{name:"晚上",value:357},{name:"中午和晚上",value:217}]

let obj = source_arr[0];
let out_arr = [];	//创建一个数组
for(let key in obj){
	let temp = {};			//创建临时对象
	temp.name = key;		//存储对象的Key为name
	temp.value = obj[key];	//存储value
	out_arr.push(temp);
}
let res = JSON.stringify(out_arr);	//转换json
</script>
9、对象数组拆分

unshift:将参数添加到原数组开头,并返回数组的长度

var a = [1,2,3,4,5];   
var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7  

注:在IE6.0下测试返回值总为undefined,FF2.0下测试返回值为7,所以这个方法的返回值不可靠,需要用返回值时可用splice代替本方法来使用。 

concat:返回一个新数组,是将参数添加到原数组中构成的

var a = [1,2,3,4,5];   
var b = a.concat(6,7); //a:[1,2,3,4,5] b:[1,2,3,4,5,6,7]  

splice(start,deleteCount,val1,val2,…):从start位置开始删除deleteCount项,并从该位置起插入val1,val2,…

var a = [1,2,3,4,5];   
var b = a.splice(2,2,7,8,9); //a:[1,2,7,8,9,5] b:[3,4]   
var b = a.splice(0,1); //同shift   
a.splice(0,0,-2,-1); var b = a.length; //同unshift   
var b = a.splice(a.length-1,1); //同pop   
a.splice(a.length,0,6,7); var b = a.length; //同push  
  //Array:  
  
/*新建:*/var ary = new Array(); 或 var ary = [];   
/*增加:*/ary.push(value);   
/*删除:*/delete ary[n];   
/*遍历:*/for ( var i=0 ; i < ary.length ; ++i ) ary[i];  
  
  //Object:  
  
/*新建:*/var obj = new Object(); 或 var obj = {};   
/*增加:*/obj[key] = value; (key为string)   
/*删除:*/delete obj[key];   
/*遍历:*/for ( var key in obj ) obj[key]; 
10、map,forEach,filter,every,some
这几个迭代方法包含两个参数:第一个要对数组对象操作的方法函数,第二个(可选参数)为作用域对象

方法函数可以传递三个参数:1.数组中每个对象,2在数组中的位置,3,数组对象本身(可选)。

every()返回一个真假值 主要对数组中每个对象进行判断,每个判断为true时最后 every会返回true

some()  和every差不多,不同这个是只要有一个符合条件就会返回true

map() 返回一个数组,返回每个操作函数所需要的值 组成数组forEach()没有返回值 主要通过参数函数对数组中对象进行操作filter()过滤器 返回true的数组(符合条件时候)
var num=[1,2,3,4,5];
num.every(function(item,index){return item>1});// false
num.some(function(item,index){return item>1});//true
num.map(function(item,index){return item*2});// [2, 4, 6, 8, 10]
num.forEach(function(item,index){console.log(item*2)});
num.filter(function(item,index){return item>2});// [3, 4, 5]
11、js 数组转json,json转数组
//数组转json串
var arr = [1,2,3, { a : 1 } ];
JSON.stringify( arr );

//json字符串转数组
var jsonStr = '[1,2,3,{"a":1}]';
JSON.parse( jsonStr );
12、例如
let arr =[
    {"id":"1001","name":"值1","value":"111"},
    {"id":"1001","name":"值1","value":"11111"},
    {"id":"1002","name":"值2","value":"25462"},
    {"id":"1002","name":"值2","value":"23131"},
    {"id":"1002","name":"值2","value":"2315432"},
    {"id":"1003","name":"值3","value":"333333"}
]
||
[
    {
        "id": "1001",
        "name": "值1",
        "data": [
            {"id": "1001", "name": "值1", "value": "111"},
            { "id": "1001", "name": "值1", "value": "11111"}
        ]
    },
    {
        "id": "1002",
        "name": "值2",
        "data": [
            { "id": "1002",  "name": "值2", "value": "25462" },
            { "id": "1002", "name": "值2", "value": "23131"},
            {"id": "1002", "name": "值2","value": "2315432" }
        ]
    },
    {
        "id": "1003",
        "name": "值3",
        "data": [
            {"id": "1003", "name": "值3", "value": "333333" }
        ]
    }
]

var map = {},
    dest = [];
for(var i = 0; i < arr.length; i++){
    var ai = arr[i];
    if(!map[ai.id]){
        dest.push({
            id: ai.id,
            name: ai.name,
            data: [ai]
        });
        map[ai.id] = ai;
    }else{
        for(var j = 0; j < dest.length; j++){
            var dj = dest[j];
            if(dj.id == ai.id){
                dj.data.push(ai);
                break;
            }
        }
    }
}

console.log(dest);
14、判断某个数组中是否包含另一个数组
var a = [1,2,3,4,5];
var b = [1,4,3,2];
var c = [1,6];
alert(isContained(a,b));//true
alert(isContained(a,c));//false


//是否被包含,是返回true,不是返回false
isContained =(a, b)=>{
    if(!(a instanceof Array) || !(b instanceof Array)) return false;
    if(a.length < b.length) return false;
    var aStr = a.toString();
    for(var i = 0, len = b.length; i < len; i++){
      if(aStr.indexOf(b[i]) == -1) return false;
    }
    return true;
  }

在这里插入图片描述数组基础

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值