对象
1.替换某一个value值
const data = {
bizInst: "已全选"
bizRegion: "已全选"
businessDesc: "1111"
enterpriseType: "IPO"
merchantType: "已全选"
name: "liujiaceshi13"
onboardChannel: "已全选"
templateId: "template.sys.v2"
}我想过滤出来里面value是‘已全选’的,然后替换成‘all’,方法挺多,但是我笨啊,我就想到了一个转字符串然后转回来的办法;
这样的:
const item = JSON.parse(
JSON.stringify(datas, (key, id) => {
if (id === '已全选') {
return 'all'
} return id
}))但是这样真的有点菜鸡了,想不出来啊,就问了下朋友,数据处理大师,果然结果是好很多:
Object.keys(obj).forEach(
key => (obj[key] = obj[key] === '已全选' ? 'all' : obj[key]),
);2.删除某一个value对应key
数据:
const data = {hasMD5Key: true, hasRSAKey: true, hasRSA2Key: false}处理方法:
1. Object.keys(itemTypes).forEach(item => { if (!itemTypes[item]) { delete itemTypes[item] } });
2. for (let i in itemTypes) { if(!itemTypes[i]) { delete itemTypes[i] } }数组
1.key相同时,把item中另一个key的value相加
const aaa = [ { rname: '批发和零售业', rnumber: 0, dealNumber: 2 }, { rname: '制造业', rnumber: 5, dealNumber: 0 }, { rname: '批发和零售业', rnumber: 3, dealNumber: 0 }, ];把里面rname的key相同时候的rnumber和dealName分别相加返回一个新的对象到数组,删除相加的item,不知道懂不懂简单就是要返回这个样子
const aaa = [ { rname: '批发和零售业', rnumber: 3, dealNumber: 2 }, { rname: '制造业', rnumber: 5, dealNumber: 0 }, ];当然不止这几条数据啦~
aaa.reduce( (pre, cur, _, arr) => { const flag = pre.find(item => item.rname === cur.rname); if (!!flag) { const newData = { rname: flag.rname, rnumber: flag.rnumber + cur.rnumber, dealNumber: flag.dealNumber + cur.dealNumber, }; const filteredData = pre.filter(item => item.rname !== cur.rname); return [...filteredData, newData]; } return [...pre, cur]; }, [aaa[0]], );aaa.reduce(
(pre, cur, _, arr) => {
const flag = pre.find(item => item.rname === cur.rname);
if (!!flag) {
const newData = {
rname: flag.rname,
rnumber: flag.rnumber + cur.rnumber,
dealNumber: flag.dealNumber + cur.dealNumber,
};
const filteredData = pre.filter(item => item.rname !== cur.rname);
return [...filteredData, newData];
}
return [...pre, cur];
},
[aaa[0]],
);还有一个类似的数据处理:
id相同的时候保留time最大的值
getMax = () => { const data = [ { id: 1, time: 1 }, { id: 1, time: 2 }, { id: 2, time: 3 }, { id: 3, time: 3 }, ]; const res = data.reduce((pre, cur) => { return !pre.find(value => value.id === cur.id) ? [...pre, cur] : pre.find(value => value.id === cur.id).time > cur.time ? [...pre] : [...pre.filter(value => value.id !== cur.id), cur]; }, []); console.log(1111, res); };2.从一个数组中找到另一个数组匹配的数组对象的值
const data = [
{code: "00061000020180322001000", instId: "3088", mainProdCode: "00061000000000001253", name: "tracyProdSale1", status: "02", …},
{code: "00061000020180820001100", instId: "3088", mainProdCode: "00061000000000001253", name: "全三test2", status: "02", …},
{code: "00061000020181017001001", instId: "3088", mainProdCode: "00061000000000001858", name: "颵栩测试", status: "02", …}
]
const arr = ["00061000020180322001000", "00061000020180820001100"]
我想找到arr的item对应data里面code相同的一个对象,返回新的数组对象;
嘿嘿,问了个简单的方法,必须记录一下
const result = data.filter(item => arr.includes(item.code));
不知道写什么了,持续更新····