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个键。这也不是完全证明,但更具可扩展性。