【发布时间】:2020-04-06 05:52:37
【问题描述】:
此函数的目标是验证密钥。如果键匹配且不存在其他键,则应返回 true。如果没有匹配的键或者它们小于预期的键,它应该返回 false。
函数validateKeys(object, expectedKeys) 通常应返回true 或false。我贴了详细的code给大家看程序流程
//running the function with `objectA` and `expectedKeys`
// should return `true`
const objectA = {
id: 2,
name: 'Jane Doe',
age: 34,
city: 'Chicago',
};
// running the function with `objectB` and `expectedKeys`
// should return `false`
const objectB = {
id: 3,
age: 33,
city: 'Peoria',
};
const expectedKeys = ['id', 'name', 'age', 'city'];
function validateKeys(object, expectedKeys) {
// your code goes here
for (let i=0; i<expectedKeys.length;i++) {
if (Object.keys(object).length === expectedKeys[i]) {
return false;
}else if (expectedKeys[i] < Object.keys(object) || Object.keys(object).length > expectedKeys[i] ) {
return false;
}else
return;
}
return true;
}
/* From here down, you are not expected to
understand.... for now :)
Nothing to see here!
*/
function testIt() {
const objectA = {
id: 2,
name: 'Jane Doe',
age: 34,
city: 'Chicago',
};
const objectB = {
id: 3,
age: 33,
city: 'Peoria',
};
const objectC = {
id: 9,
name: 'Billy Bear',
age: 62,
city: 'Milwaukee',
status: 'paused',
};
const objectD = {
foo: 2,
bar: 'Jane Doe',
bizz: 34,
bang: 'Chicago',
};
const expectedKeys = ['id', 'name', 'age', 'city'];
if (typeof validateKeys(objectA, expectedKeys) !== 'boolean') {
console.error('FAILURE: validateKeys should return a boolean value');
return;
}
if (!validateKeys(objectA, expectedKeys)) {
console.error(
`FAILURE: running validateKeys with the following object and keys
should return true but returned false:
Object: ${JSON.stringify(objectA)}
Expected keys: ${expectedKeys}`
);
return;
}
if (validateKeys(objectB, expectedKeys)) {
console.error(
`FAILURE: running validateKeys with the following object and keys
should return false but returned true:
Object: ${JSON.stringify(objectB)}
Expected keys: ${expectedKeys}`
);
return;
}
if (validateKeys(objectC, expectedKeys)) {
console.error(
`FAILURE: running validateKeys with the following object and keys
should return false but returned true:
Object: ${JSON.stringify(objectC)}
Expected keys: ${expectedKeys}`
);
return;
}
if (validateKeys(objectD, expectedKeys)) {
console.error(
`FAILURE: running validateKeys with the following object and keys
should return false but returned true:
Object: ${JSON.stringify(objectD)}
Expected keys: ${expectedKeys}`
);
return;
}
console.log('SUCCESS: validateKeys is working');
}
testIt();
【问题讨论】:
-
else return;????这似乎是你的问题之一 -
这看起来很像家庭作业。
-
您的逻辑似乎有缺陷,例如,您要在这里做什么
Object.keys(object).length === expectedKeys[i]?一个是给出给定对象中键的数量,另一个是具有某个键值的字符串。
标签: javascript function object