的Javascript:更新一个对象的属性
问题描述:
我创建一个功能,停留在此提示:的Javascript:更新一个对象的属性
updateObject():应取一个对象,一个键和一个值。应该用新值更新对象上的属性密钥。如果在创建它时不存在。
这是我的代码:
function updateObject(object, key, value) {
if (object.key) {
return object.key = value;
} else if (object.key === false) {
return object.key;
}
}
这是它试图通过测试:
QUnit.test("updateObject() : Should take an object, a key and a value. Should update the property <key> on <object> with new <value>. If <key> does not exist on <object> create it.", function(assert){
var data = {a: "one", b: "two", "hokey": false};
assert.deepEqual(updateObject(data, "b", "three"), {a:"one", b:"three", hokey: false});
var data = {a: "one", b: "two", "hokey": false};
assert.deepEqual(updateObject(data, "ponies", "yes"), {a:"one", b:"two", hokey: false, ponies: "yes"});
var data = {a: "one", b: "two", "hokey": false};
assert.deepEqual(updateObject(data, "a", Infinity), {a:Infinity, b:"two", hokey: false});
});
我在做什么错?
答
使用,如果有需要使用variable.Also hasOwnProperty
访问对象键可以用来检查对象有一个关键
function updateObject(object, key, value) {
if (object.hasOwnProperty(key)) {
return object[key] // will return value of the key in that object
} else {
return object[key]=value; // will create a new key and will assign value
}
}
+0
因此,如果有一个关键属性,但没有价值的情况下,我将如何修改第一个回报? – Ashton
答
你需要从函数返回更新的对象括号测试通过。
function updateObject(object, key, value) {
object[key] = value;
return object;
}
如果'key'是一个变量,则需要使用'object [key]'。这是为了将它与名为'key'的实际密钥区分开来。 –
[我如何使用变量作为名称向JavaScript对象添加属性?](https://stackoverflow.com/questions/695050/how-do-i-add-a-property-to- a-javascript-object-using-a-variable-as-the-name) –
我认为使用括号和点符号是可以互换的吗? Key实际上是我测试的属性:第一个语句测试是否存在关键属性,然后将该值推送到关键字上。如果不是,则在第二个测试实例中创建key属性,以查看是否存在关键属性。 – Ashton