从对象中删除和更改值

时间:2019-01-11 09:06:28

标签: 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"}

现在我想将field1,field2,field3和field4更改为:

parameters: [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"}

注意:如果对数组进行排序更容易,我也可以更改field1,field2等名称。

我尝试了以下方法,但是没有运气: Convert object's properties and values to array of key value pairs

4 个答案:

答案 0 :(得分:1)

步骤:

  1. 使用名为data的属性在parameters对象中创建一个数组。

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

  3. 此后每个data.field*删除。

无循环

let data = {cost: 2,
    field1: 2,
    field2: 2,
    field3: 2,
    field4: 2,
    length: 2,
    material: 5715382975332352,
    name: "name",
    stock: 2,
    thickness: 2,
    type: "RECTANGULAR"
}

data.parameters = [data.field1, data.field2, data.field3, data.field4];
delete data.field1;
delete data.field2;
delete data.field3;
delete data.field4;
console.log(data);

使用循环

let data = {cost: 2,
    field1: 2,
    field2: 2,
    field3: 2,
    field4: 2,
    length: 2,
    material: 5715382975332352,
    name: "name",
    stock: 2,
    thickness: 2,
    type: "RECTANGULAR"
}

data.parameters = [];
for (let i = 1; i <= 4; i++){
  data.parameters.push(data["field"+i]);
  delete data["field"+i];
}
console.log(data);

答案 1 :(得分:0)

从输入对象中获取条目,然后将它们简化为一个新对象,使用键field检查道具并将它们分组为一个新的道具parameters,它是一个数组:

const data = {
  cost: 1,
  field1: 2,
  field2: 3,
  field3: 4,
  field4: 5,
  length: 6,
  material: 5715382975332352,
  name: "name",
  stock: 7,
  thickness: 8,
  type: "RECTANGULAR"
};

console.log(Object.entries(data).reduce((acc, val, ind) => {
  if (val[0].includes('field')) {
    acc['parameters'] = acc['parameters'] || [];
    acc['parameters'].push(val[1]);
  }
  else {
    acc[val[0]] = val[1];
  }
  return acc;
}, {}));

答案 2 :(得分:0)

这可以做到

    var a={cost: 2,
        field1: 2,
        field2: 2,
        field3: 2,
        field4: 2,
        length: 2,
        material: 5715382975332352,
        name: "name",
        stock: 2,
        thickness: 2,
        type: "RECTANGULAR"};
       var arr=Object.keys(a);
       var values=[];
       arr.forEach((e)=>{
    if(e.includes('field'))
    {
        
    values.push(a[e]);
    delete a[e];
    }
       })
       a.parameters=values;
       console.log(a);

答案 3 :(得分:0)

您可以这样做。.

http.formLogin().disable(); http.logout().disable();