js对象 数组转换

  • 第一个
    前:
const arr = [{
    brand: 'apple',
    name: 'IPHONE'
},
{
    brand: 'samsung',
    name: 'GALAXY'
}];

后:

{apple: "IPHONE", samsung: "GALAXY"}

过程:

arr.reduce((result, item) => {
    result[item.brand] = item.name;
    return result;
}, {})

  • 第二个
    前:
const obj = {
    brand: "apple",
    capacity: "64G",
    color: "Black",
    modelName: "IPHONE 6S",
    ram: "4G",
};

后:

[
    { key: "brand", value: "apple" },
    { key: "capacity", value: "64G" },
    { key: "color", value: "Black" },
    { key: "modelName", value: "IPHONE 6S" },
    { key: "ram", value: "4G" },
]

过程:

Object.entries(obj).map(([key, value]) => {
    return { key, value }
});
  • 第三个
    前:
const list= [
        {
            name: "name1",
            age: "1"

        },
        {
            name: "name2",
            age: "2"
        },
        {
            name: "name1",
            age: "3"
        },
    ],

后:

   const data = {
    name: ["name1", "name2"],
    age: ["1", "2", "3"],
  };

过程:

const name=[];
const age=[];
list.forEach((item)=>{
    name.push(item.name);
    age.push(item.age);
});
const data={
    name:[...new Set(name)],
    age:[...new Set(age)],
}
  • 第四个
    前:
const data = [
    {
        name: "name1",
        age: "1",
        sex: "boy",
    },
    {
        name: "name2",
        age: "2",
        sex: "boy",
    },
    {
        name: "name3",
        age: "3",
        sex: "girl",
    },
]

后:

const data = [
    {
        name: "name1",
        age: "1",
    },
    {
        name: "name2",
        age: "2",
    },
    {
        name: "name3",
        age: "3",
    },
]

过程:

data.map((item)=>delete item.sex);
console.log(data);
  • 第五个
    前:
    const a= [
        {
            a: "apple",
            b: "boy",
            qty: 1
        },
        {
            a: "samsung",
            b: "boy",
            qty: 2
        },
        {
            a: "lg",
            b: "girl",
            qty: 2
        },
        {
            a: "lg",
            b: "girl",
            qty: 5
        },
        {
            a: "NOKIA",
            b: "boy-girl",
            qty: 3
        },
    ]

后:

 const a= [
        {
            b: "boy",
            qty: 3,
            key: "boy"
        },
        {
            b: "girl",
            qty: 7,
            key: "girl"
        },
        {
            b: "boy-girl",
            qty: 3,
            key: "boy-girl"
        }
    ]

过程:

    a.forEach((item) => {
        delete item.a;
    });
    const data = [];
    const rowKeys = [];
    a.forEach((item) => {
        const {
            b,
            qty
        } = item;
        const rowKey = item.b;
        const index = rowKeys.indexOf(rowKey);
        if (index === -1) {
            rowKeys.push(rowKey);
            const row = Object.keys(item).reduce((result, propKey) => {
                if (propKey === 'b') {
                    result.b = b;
                } else if (propKey === 'qty') {
                    result.qty = qty;
                }
                return result;
            }, {});
            row.key = rowKey;
            data.push(row);
        } else {
            data[index].qty += qty;
        }
    })
    console.log('the final a is ', data);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值