js处理数组 ,对象 ,格式问题汇总(持续更新)

这里做下平时用到组件时 产生的问题记录

①. js从数组中的对象取出特定字段并生成新的数组及为改变原数组字段值

②. Object.keys() 获得对象属性名数组,以及属性对应的

③.向一个对象数组里面添加新的属性

④.将一个对象数组数据拿出来变成另一个对象

⑤.js 从一个数组中取出几个特定的字段组成新的数组

⑥.JS如何从一个数组中随机取出一个元素或者几个元素

⑦.js 将多个对象合并成一个对象 assign方法

⑧.js对象赋值给另一个含有相同key的的对象

⑨.js对象取值的两种方式(点和中括号)

⑩.从 URL 获取查询参数

①. js从数组中的对象取出特定字段并生成新的数组及为改变原数组字段值

let arr = [
  {
    'id': '1',
    'name': '小红',
  },
  {
    'id': '2',
    'name: '小白',
  },
  {
    'id': '3',
    'name': '小黄',
  }
];
// 使用map()生成数组
let new_arr = arr.map(obj => {return obj.name})
// 输出 ['小红','小白','小黄']
var  filters = arr.filter(item => {
    return item.id =  `${item.id}s`
})

console.log(filters)
// 输出 [
  {
    'id': '1s',
    'name': '小红',
  },
  {
    'id': '2s',
    'name: '小白',
  },
  {
    'id': '3s',
    'name': '小黄',
  }
];

②. Object.keys() 获得对象属性名数组,以及属性对应的值

  • 该方法可获得对象的属性名,返回一个数组

Object.keys(arg):

Object 是固定格式;

arg 是需要检测的对象;

var fruits = { first: "apple", second:"banana ",last: "banana",  },
 
Object.keys(fruits) // 返回数组: first,second, last
  • 用Object.keys()方法获取属性对应的值

obj[Object.keys(arg)[i]]:

obj 是对象;

i 是属性的索引值

var fruits = { first: "apple", second:"banana ",last: "banana",  },
 
fruits[Object.keys(fruits)[0]] // 返回first 对应的属性值: apple

这里获取的是 fruits 这个对象第一个属性first 的值 :apple

③.向一个对象数组里面添加新的属性


var arry = [
        { a: 11, b: 22, c: 33, d: 44 },
        { a: 11, b: 0, c: 0, d: 44 },
        { a: 11, b: 22, c: 99, d: 99 },
      ];
      var arry2 = [];
      arry.map((item, index) => {
        arry2.push(Object.assign({}, item, { mess1: item.c, mess2: item.d }));
      });
      console.log(arry2);

在这里插入图片描述

④.将一个对象数组数据拿出来变成另一个对象

var arry= [{a:11,b:22,c:33,d:44},{a:11,b:0,c:0,d:44},{a:11,b:22,c:99,d:99}];
var arry2=[];
arry.map(((item, index)=> {
arry2.push(Object.assign({},{mess1:item.c,mess2:item.d}))
}))
console.log(arry2);

在这里插入图片描述

⑤.js 从一个数组中取出几个特定的字段组成新的数组

var productJson = [];
    res.forEach(function(item){
    productJson.push(
    	{ goodsId: item.goodsId, 
    	  productId: item.productId, 
    	  goodsNum: item.goodsNum
    	})
	})
console.log(productJson)

在这里插入图片描述

⑥.JS如何从一个数组中随机取出一个元素或者几个元素

在这里插入图片描述

⑦.js 将多个对象合并成一个对象 assign方法

接下来介绍一下ES6在Object新加的方法 assign()

  • 作用:将多个对象{} 合并成一个独立对象。
  • 使用方式: Object.assign(合并的对象,传入合并中的对象…)
 let user = {name:'无敌人',age:19};
 let page = {pageSize:10,currentPage:1};
 let newObj = {};
 
 Object.assign(newObj,user,page);

在这里插入图片描述

⑧.js对象赋值给另一个含有相同key的的对象

        let n = {
            a: '',
            b: '',
            c: ''
        }
        let m = {
            a: 'aaa',
            b: 'bbb',
            c: 'ccc',
            d: 'ddd'
        }
        Object.keys(n).forEach(key => {
            n[key] = m[key] || n[key]
        })
        console.log(n);

在这里插入图片描述

⑨.js对象取值的两种方式(点和中括号)

// 通过.的方式获取属性值 ,key是静态的
var obj = {name:"小太阳",age:18};
var name1 = obj.name;//使用点的方式

// 通过[]的方式获取属性值,key是动态的,可以是字符串,也可以是数字,还可以是变量
var obj1 = {"name":"小太阳","age":18};
var obj2 = {1: "使用", 2: "为使用"}
var attr1 = obj1["name"];//使用中括号的方式
var attr2 = obj1[1]; 

[]也可以通常用来匹配字典表  变量形式
   var statusData = {
      '0': {
        label: '未处理'
      },
      '1': {
        label: '已处理'
      },
      '2': {
        label: '已过期'
      }
    },
        <el-table-column
          prop="dealFlag"
          min-width="15%"
          label="状态">
          <template slot-scope="scope">
            <span >{{ scope.row.dealFlag ? statusData[(scope.row.dealFlag)].label : '' }}</span>
          </template>
        </el-table-column>

总结: 点和中括号方式的区别
1.点方法后面跟的必须是一个指定的属性名称,中括号里面可以是变量
2.中括号里面的属性可以是数字,点方法后面的属性名不能是数字
3.动态为对象添加属性是,只能用中括号

⑩.从 URL 获取查询参数

可以通过传递 window.location 或原始 URL goole.com?search=easy&page=3 轻松地从 url 检索查询参数

const getParameters = (URL) => {
  URL = JSON.parse(
    '{"' +
      decodeURI(URL.split("?")[1])
        .replace(/"/g, '\\"')
        .replace(/&/g, '","')
        .replace(/=/g, '":"') +
      '"}'
  );
  return JSON.stringify(URL);
};

getParameters(window.location.href);
// Result: { search : "easy", page : 3 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值