我正在尝试从对象数组中删除属性。
export class class1 {
prop1: string;
prop2: string;
prop3: string;
}
export class class2 {
myprop = [
{ prop1:'A', prop2:"1", prop3:"descr1" },
{ prop1:'B', prop2:"2", prop3:"descr2" },
{ prop1:'C', prop2:"3", prop3:"descr3" },
];
get(): class1[] {
return this.myprop ;
}
add(value: class1): void {
this.myprop.push(value);
}
}
var var1 = class2.get();
var var2 =
我希望var2包含这样的内容。
[
{ prop1:'A', prop3:"descr1" },
{ prop1:'B', prop3:"descr2" },
{ prop1:'C', prop3:"descr3" },
];
有没有办法将var1
转换/投射到上面?换句话说,我想从prop2
对象数组中删除var1
并将其分配给var2
。我怎么能这样做?
答案 0 :(得分:12)
这似乎是使用.map()
var var1 = class2.get();
var var2 = var1.map(obj => ({prop1: obj.prop1, prop3: obj.prop3}));
简短,甜蜜,做你想做的事。
答案 1 :(得分:2)
您可以删除此类对象属性,例如
var myprop = [
{prop1: 'A', prop2: "1", prop3: "descr1"},
{prop1: 'B', prop2: "2", prop3: "descr2"},
{prop1: 'C', prop2: "3", prop3: "descr3"},
];
myprop = myprop.filter(function (props) {
delete props.prop2;
return true;
});
console.log(myprop);
答案 2 :(得分:1)
在TypeScript中进行强制转换不会删除该属性,只会将其隐藏在IDE中,因为它将在运行时编译为JavaScript。
首先,如果您不想从prop2
删除var1
而从var2
删除该属性,则需要克隆它。为此,您将需要此JavaScript函数:
function cloneObject(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
var temp = obj.constructor(); // give temp the original obj's constructor
for (var key in obj) {
temp[key] = cloneObject(obj[key]);
}
return temp;
}
使用克隆功能克隆var1
并循环var2
中的每个对象以删除属性prop2
。您可以通过组合array.forEach和delete:
var var2 = cloneObject(var1);
var2.forEach((obj) => { delete obj.prop2; });
这样做会在prop2
中保留var1
,但请从var2
$con=mysqli_connect("host","user","password") or die(mysqli_error());
mysqli_select_db($con,"yourdatabasename");
答案 3 :(得分:0)
// Use delete:
var user = {
firstname:"Jack",
lastname:"Prince",
};
var result = delete user.firstname;
console.log(result,"firstname deleted");
console.log(user);
//using Object rest spread operator
const { firstname, ...data } = user;
console.log(data);