Javascript 从对象中删除和更改值

Javascript 从对象中删除和更改值,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我有一个包含以下数据的对象: {cost: 2 field1: 2 field2: 2 field3: 2 field4: 2 length: 2 material: 5715382975332352 name: "name" stock: 2 thickness: 2 type: "RECTANGULAR"} 现在,我想将字段1、字段2、字段3和字段4更改为: 参数:[2,2,2,2]因此,请删除该字段并将

我有一个包含以下数据的对象:

   {cost: 2
    field1: 2
    field2: 2
    field3: 2
    field4: 2
    length: 2
    material: 5715382975332352
    name: "name"
    stock: 2
    thickness: 2
    type: "RECTANGULAR"}
现在,我想将字段1、字段2、字段3和字段4更改为:

参数:[2,2,2,2]
因此,请删除该字段并将其转换为仅包含值的数组,这样更新的对象应该如下所示:

   {cost: 2
    parameters: [2,2,2,2] //values field1, field2, field3, field4
    length: 2
    material: 5715382975332352
    name: "name"
    stock: 2
    thickness: 2
    type: "RECTANGULAR"}
注意:我还可以更改字段1、字段2等。。如果这更便于对数组进行排序,则命名

我尝试了以下方法,但没有成功:

步骤:

  • 使用名为
    参数的属性在
    数据
    对象中创建一个数组

  • 将每个
    data.field*
    推入
    data.parameters
    数组

  • 随后删除每个
    数据字段*

  • 不带循环

    let data={cost:2,
    字段1:2,
    字段2:2,
    字段3:2,
    字段4:2,
    长度:2,
    材料:5715382975332352,
    姓名:“姓名”,
    股票:2,
    厚度:2,
    类型:“矩形”
    }
    data.parameters=[data.field1、data.field2、data.field3、data.field4];
    删除数据字段1;
    删除数据字段2;
    删除数据字段3;
    删除数据字段4;
    
    控制台日志(数据)
    从输入对象中获取条目,然后将其减少为一个新对象,使用键
    字段检查道具,并将其分组为一个新道具
    参数
    ,它是一个数组:

    const数据={
    费用:1,
    字段1:2,
    字段2:3,
    字段3:4,
    字段4:5,
    长度:6,
    材料:5715382975332352,
    姓名:“姓名”,
    股票:7,
    厚度:8,
    类型:“矩形”
    };
    console.log(Object.entries(data).reduce((acc,val,ind)=>{
    if(val[0]。包含('field')){
    acc['parameters']=acc['parameters']| |[];
    acc['parameters'].push(val[1]);
    }
    否则{
    acc[val[0]]=val[1];
    }
    返回acc;
    }, {}));这样就可以了-

    var a={cost:2,
    字段1:2,
    字段2:2,
    字段3:2,
    字段4:2,
    长度:2,
    材料:5715382975332352,
    姓名:“姓名”,
    股票:2,
    厚度:2,
    类型:“矩形”};
    var arr=Object.keys(a);
    var值=[];
    arr.forEach((e)=>{
    如果(例如,包括(“字段”)
    {
    推(a[e]);
    删除[e];
    }
    })
    a、 参数=值;
    控制台日志(a)您可以这样做

    <script type="text/javascript">
    
        var obj = {
            cost: 2,
        field1: 2,
        field2: 2,
        field3: 2,
        field4: 2,
        length: 2,
        material: 5715382975332352,
        name: "name",
        stock: 2,
        thickness: 2,
        type: "RECTANGULAR"};
    
        var obj2 = {};
        var arr = [];
    
        for (var k in obj) {
            if(k.includes("field")){ // if key contains field text
                arr.push(obj[k]);
            } else {
                obj2[k] = obj[k];   
            }
        }
        obj2['parameters'] = arr;
    
        // your object
        console.log(obj);
        // your desired object
        console.log(obj2);
    
    
    </script>
    
    
    var obj={
    费用:2,
    字段1:2,
    字段2:2,
    字段3:2,
    字段4:2,
    长度:2,
    材料:5715382975332352,
    姓名:“姓名”,
    股票:2,
    厚度:2,
    类型:“矩形”};
    var obj2={};
    var-arr=[];
    用于(obj中的var k){
    if(k.includes(“field”){//if键包含字段文本
    arr.push(对象[k]);
    }否则{
    obj2[k]=obj[k];
    }
    }
    obj2[‘参数’]=arr;
    //你的目标
    控制台日志(obj);
    //你想要的东西
    console.log(obj2);
    
    Btw,是否有方法计算此对象中的字段数并将此计数添加到循环中?因为对象包含的字段较少,例如field1,field2@holydragon一个循环方法仅限制到4个键。这也不是完全证明,但更具可扩展性。