You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何处理数组内对象:筛选属性并交换字段

JavaScript 对象数组处理方案

需求说明

需要对包含对象的数组执行以下操作:

  • 交换两个对象的vendor_pkt_name属性值
  • 修改第二个对象的djpw_kcu_induk属性为"432"
  • 删除所有对象中不需要的属性:operational_hour_start、city、djpw_provinsi、djpw_latitude

原始数据

const data = [{
    "id_pemasangan_mesin": 0.2879244882244172,
    "wsid": "3Y9W",
    "location_2nd": "Bekasi Timur barat",
    "branch": "0998-SLA. JAKARTA",
    "vendor_pkt_name": "PT NCR INDONESIA",
    "djpw_kcu_induk": "244 - Kalimalang",
    "lokasi_pengambilan_kartu": "0393 - KARTASURA",
    "operational_hour_start": null,
    "city": "Kotamadya Bekasi",
    "djpw_provinsi": "Jawa Barat",
    "djpw_latitude": "-6.248329"
},
{
    "id_pemasangan_mesin": 0.9599194420299093,
    "wsid": "0XPR",
    "location_2nd": "Bekasi Timur barat",
    "branch": "0998-SLA. JAKARTA",
    "vendor_pkt_name": "PT Wakwaw INDONESIA",
    "djpw_kcu_induk": "333",
    "lokasi_pengambilan_kartu": "7735 - THE PARK",
    "operational_hour_start": null,
    "city": "Kotamadya Bekasi",
    "djpw_provinsi": "Jawa Barat",
    "djpw_latitude": "-6.248329"
}];

期望结果

[{
    "id_pemasangan_mesin": 0.2879244882244172,
    "wsid": "3Y9W",
    "location_2nd": "Bekasi Timur barat",
    "branch": "0998-SLA. JAKARTA",
    "vendor_pkt_name": "PT Wakwaw INDONESIA",
    "djpw_kcu_induk": "244 - Kalimalang",
    "lokasi_pengambilan_kartu": "0393 - KARTASURA"
},
{
    "id_pemasangan_mesin": 0.9599194420299093,
    "wsid": "0XPR",
    "location_2nd": "Bekasi Timur barat",
    "branch": "0998-SLA. JAKARTA",
    "vendor_pkt_name": "PT NCR INDONESIA",
    "djpw_kcu_induk": "432",
    "lokasi_pengambilan_kartu": "7735 - THE PARK"
}]

实现方案

方案1:创建新数组(推荐,不修改原数据)

使用Array.prototype.map()遍历数组,通过解构赋值保留需要的属性,同时修改目标属性值。这种方式不会改变原始数据,避免副作用。

// 提取两个对象的vendor_pkt_name用于交换
const [firstVendor, secondVendor] = [data[0].vendor_pkt_name, data[1].vendor_pkt_name];

// 处理数组生成新结果
const processedData = data.map((item, index) => {
    // 解构跳过不需要的属性,保留其余属性
    const {
        operational_hour_start,
        city,
        djpw_provinsi,
        djpw_latitude,
        ...restProps
    } = item;

    // 根据索引修改对应属性
    if (index === 0) {
        return { ...restProps, vendor_pkt_name: secondVendor };
    } else if (index === 1) {
        return { ...restProps, vendor_pkt_name: firstVendor, djpw_kcu_induk: "432" };
    }
    return restProps; // 处理更多元素的兜底逻辑
});

console.log(processedData);

方案2:直接修改原数组

如果允许修改原始数据,可以直接操作对象属性,配合delete关键字删除不需要的属性:

// 交换两个对象的vendor_pkt_name
const tempVendor = data[0].vendor_pkt_name;
data[0].vendor_pkt_name = data[1].vendor_pkt_name;
data[1].vendor_pkt_name = tempVendor;

// 修改第二个对象的djpw_kcu_induk
data[1].djpw_kcu_induk = "432";

// 定义需要删除的属性列表
const keysToRemove = ['operational_hour_start', 'city', 'djpw_provinsi', 'djpw_latitude'];

// 遍历数组删除每个对象的指定属性
data.forEach(item => {
    keysToRemove.forEach(key => delete item[key]);
});

console.log(data);

内容的提问来源于stack exchange,提问作者Ragil Pratama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:04:57