JavaScript 如何在条件下向对象添加成员
对象是JavaScript中最重要的数据类型。实际上,在JavaScript中一切都是对象。示例,数组是一个对象,数字、字符串和布尔值也可以是对象。
有时候,开发人员需要根据一些条件将属性插入到对象中。示例,我们有一个人的对象,只有在一个人满18岁时才需要添加驾驶执照属性。
在这里,我们将学习不同的方法来使用JavaScript在条件下将成员添加到对象中。
使用扩展运算符有条件地向对象添加成员
有条件地向对象添加成员的第一种方法是使用扩展运算符。如果条件评估为真,我们可以使用带有条件的扩展运算符来向对象添加属性。
语法
用户可以按照以下语法使用扩展运算符将对象属性有条件地添加到对象中。
let obj = {
...(condition ? { prop: 'value' } : {})
}
在上述语法中,如果条件为真,则将带有值的属性添加到“obj”对象中。否则,它将添加一个空对象。
示例1
在下面的示例中,我们创建了包含三个不同属性和值的演示对象。此后,我们定义了“addProp4”和“addProp5”两个布尔变量。
我们使用扩展运算符根据“addProp4”和“addProp5”变量的值将“prop4”和“prop5”属性添加到对象中。在输出中,用户可以观察到“prop4”属性被添加到对象中,而“prop5”属性没有。
<html>
<body>
<h3> Using the <i> spread operator </i> to add members in object conditionally </h3>
<div id = "output"> </div>
<script>
let output = document.getElementById('output');
let demo = {
prop1: 'value1',
prop2: 'value2',
prop3: 'value3'
}
output.innerHTML = "Demo object before adding the prop4 and prop5 properties conditionally is " + JSON.stringify(demo) + "<br>";
let addProp4 = true;
demo = {
...demo,
...(addProp4 ? { prop4: 'value4' } : {})
}
let addProp5 = false;
demo = {
...demo,
...(addProp5 ? { prop5: 'value5' } : {})
}
output.innerHTML += "Demo object after adding the prop4 and prop5 properties conditionally is " + JSON.stringify(demo);
</script>
</body>
</html>
使用Object.assign()方法
Object.assign()方法用于向现有或新创建的对象添加属性。此外,我们还可以根据特定条件向对象添加属性。
语法
用户可以按照以下语法使用Object.assign()方法根据特定条件向对象添加成员。
Object.assign(obj, condition ? { prop4: "value4" } : { })
在以上语法中,“obj”是一个初始对象,用于添加一些属性。第二个参数包含基于条件值添加的条件和属性。
示例2
在下面的示例中,“initialOBJ”对象包含一些属性和值。之后,我们使用Object.assign()方法根据条件向initialOBJ对象添加属性。
在下面的示例中,10 == 20
条件始终为false。因此,它会向对象添加“prop5”属性,而不是添加“prop4”属性。
<html>
<body>
<h3> Using the <i> Object.assign() method </i> to add members in object conditionally </h3>
<div id = "output"> </div>
<script>
let output = document.getElementById('output');
let initialOBJ = {
prop1: "value1",
prop2: "value2",
prop3: "value3"
};
let obj = Object.assign(initialOBJ, 10 == 20 ? { prop4: "value4" } : { prop5: "value5" });
output.innerHTML += "The object after adding the prop4 and prop5 properties conditionally is " + JSON.stringify(obj);
</script>
</body>
</html>
使用JQuery的extend()方法
正如其名称所示,extend()方法允许我们扩展JQuery中的对象。在将属性插入对象时,我们可以根据特定条件赋值。
语法
用户可以按照以下语法来使用JQuery的extend()方法。
let updatedOBJ = $.extend(initialObj, { prop: condition ? "Yes" : null);
在上述语法中,initialObj对象包含一些对象属性。在第二个参数中,我们根据条件的真值为’prop’属性赋值。
示例3
在下面的示例中,’city’对象包含与城市相关的属性和值。我们使用extend()方法更新对象,并根据给定的条件为’clean’和’trafficFree’属性赋值。
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
</head>
<body>
<h3> Using the <i> extend() method of JQuery </i> to add members in object conditionally </h3>
<div id = "output"> </div>
<script>
let output = document.getElementById('output');
let city = {
name: "Bangalore",
population: 10000000,
area: 1000
};
let isCityClean = true;
let isTrafficFree = false;
let updatedOBJ = $.extend(city, { clean: isCityClean ? "Yes" : "No", trafficFree: isTrafficFree ? "Yes" : "No" });
output.innerHTML += "The object after adding the prop4 and prop5 properties conditionally is " + JSON.stringify(updatedOBJ);
</script>
</body>
</html>
使用if语句
if语句是一种在特定条件下添加对象属性的最简单方法。如果条件求值为真,可以使用点运算符将属性添加到对象中。
语法
用户可以按照下面的语法使用if语句有条件地向对象添加属性。
if ( condition ) {
obj.prop = value;
}
如果以上的语法中条件为真,则会将‘prop’属性添加到‘obj’对象中。
示例 4
在下面的示例中,‘windowOBJ’对象包含与窗口相关的各种属性。我们定义了‘isGlassWindow’布尔变量,并将其初始化为true值。
在这里,‘isGlassWindow’变量的值为true,将在‘windowOBJ’对象中添加具有‘yes’值的‘glass’属性。
<html>
<body>
<h3> Conditionally assigning the <i> values to the object properties </i> to add members in object conditionally </h3>
<div id = "output"> </div>
<script>
let output = document.getElementById('output');
let windowOBJ = {
size: "10 X 10",
color: "red",
}
let isGlassWindow = true;
if (isGlassWindow) {
windowOBJ.glass = "yes";
} else {
windowOBJ.glass = "no";
}
output.innerHTML += "The object after adding the prop4 and prop5 properties conditionally is " + JSON.stringify(windowOBJ);
</script>
</body>
</html>
用户学习了四种根据某种条件向对象添加成员的方法。第一种方法是使用扩展运算符,是最高效的方法。第二种方法使用Object.assign()方法。第三种方法使用JQuery的extend()方法,最后一种方法使用if语句。