1. 程式人生 > 其它 >javascript中陣列常用的操作

javascript中陣列常用的操作

技術標籤:javascriptjavascript

  1. 排序(程式碼參見)
    API參見MDN
    注意:sort方法會改變原始陣列,請謹慎使用
  • 字串
//字串陣列
  const strArr = ["2020年", "2019年", "2021年", "2018年"];

  const newAscStrArr = JSON.parse(JSON.stringify(strArr)).sort((a, b) => {
    return a.localeCompare(b);
  }); //升序
  console.log
(newAscStrArr);//["2018年","2019年","2020年","2021年"] const newDescStrArr = JSON.parse(JSON.stringify(strArr)).sort((a, b) => { return b.localeCompare(a); }); //降序 console.log(newDescStrArr);//["2021年","2020年","2019年","2018年"]
  • 數值
  //數值陣列
  const arr = [100, 200, 50, 1000];
  const newAscNumberArr = JSON.parse(JSON.stringify(arr)).sort((a, b) => {
    return a - b;
  }); //升序
  console.log(newAscNumberArr);//[50,100,200,1000]

  const newDescNumberArr = JSON.parse(JSON.stringify(arr)).sort((a, b) => {
    return b - a;
  }); //降序
  console.
log(newDescNumberArr);//[1000,200,100,50]
  • 物件陣列
//物件陣列
  const objArr = [
    { name: "2020年", value: 1000 },
    { name: "2019年", value: 299 },
    { name: "2021年", value: 666 },
    { name: "2018年", value: 54 }
  ];
  //按name
  const newAscObjArr = JSON.parse(JSON.stringify(objArr)).sort((a, b) => {
    return a.name.localeCompare(b.name);
  }); //升序
  console.log(newAscObjArr);// 升序[{"name":"2018年","value":54},{"name":"2019年","value":299},{"name":"2020年","value":1000},{"name":"2021年","value":666}] 

  const newDescObjArr = JSON.parse(JSON.stringify(objArr)).sort((a, b) => {
    return b.name.localeCompare(a.name);
  }); //降序
  console.log(newDescObjArr);//[{"name":"2021年","value":666},{"name":"2020年","value":1000},{"name":"2019年","value":299},{"name":"2018年","value":54}]

  //按value
  const newAscObjArrByValue = JSON.parse(JSON.stringify(objArr)).sort(
    (a, b) => {
      return a.value - b.value;
    }
  ); //升序
  console.log(newAscObjArrByValue);//[{"name":"2018年","value":54},{"name":"2019年","value":299},{"name":"2021年","value":666},{"name":"2020年","value":1000}]

  const newDescObjArrByValue = JSON.parse(JSON.stringify(objArr)).sort(
    (a, b) => {
      return b.value - a.value;
    }
  ); //降序
  console.log(newDescObjArrByValue);//[{"name":"2020年","value":1000},{"name":"2021年","value":666},{"name":"2019年","value":299},{"name":"2018年","value":54}]
  1. 去重(程式碼參見)
 const datas = ["張三", "李四", "張三", "李四", "張三", "李四", "wangwu"];
 const newDatas = Array.from(new Set(datas)); //去重
 console.log(datas, newDatas);//原資料:["張三","李四","張三","李四","張三","李四","wangwu"],結果資料:["張三","李四","wangwu"]
  1. 比較相等

請使用lodash.isequal

  1. 檢測物件是否為陣列,使用instanceof 操作符,程式碼參見
const value=["8888"]
const isArr=value instanceof Array//true
  1. 轉化為字串
  • toString()
const datas=["張三", "李四", "張三", "李四", "張三", "李四", "wangwu"]
const str=datas.toString()//"張三,李四,張三,李四,張三,李四,wangwu"
  • JSON.stringify()
const datas=["張三", "李四", "張三", "李四", "張三", "李四", "wangwu"]
const json=JSON.stringify(datas)
//"["張三","李四","張三","李四","張三","李四","wangwu"]"
  • join()
const datas=["張三", "李四", "張三", "李四", "張三", "李四", "wangwu"]
 const joinStr = datas.join("|");//"張三|李四|張三|李四|張三|李四|wangwu"