我的目标是删除对象中的属性,其值大于给定数字" num"使用功能。但是,"删除"不管用。什么会使删除在这种情况下不起作用,是否有更好的解决方案?
function removeNumbersLargerThan(num, obj) {
for(var key in obj){
if(obj[key] > num){
delete obj.key;
}
}
return obj;
}
var obj = {
a: 8,
b: 2,
c: 'montana'
}
removeNumbersLargerThan(5, obj);
console.log(obj); // --> { b: 2, c: 'montana' }

答案 0 :(得分:0)
你差不多完成了。如果条件obj键匹配那么一样。delete obj[key]
function removeNumbersLargerThan(num, obj) {
for(var key in obj){
if(obj[key] > num){
delete obj[key];
}
}
return obj;
}
var obj = {
a: 8,
b: 2,
c: 'montana'
}
removeNumbersLargerThan(5, obj)
console.log(obj); // --> { b: 2, c: 'montana' }
答案 1 :(得分:0)
您正在翻转您正在访问的属性。你第一次就做对了,但不是第二次:
function removeNumbersLargerThan(num, obj) {
for(var key in obj){
if(obj[key] > num){ // Correct!
delete obj.key; // Should be obj[key] again
}
}
return obj;
}
否则您将删除"键"属于obj
换句话说,您的循环不是delete
您想要的属性delete
。它只是delete
对象上的key
属性:
// What you declare
let num = 5;
let obj = {
key: "hello",
keyToKill: 7,
keyToLeaveAlone: 3
}
// Your initial loop to remove keys with value greater than a number
for (let key in obj) {
// If I find a key whose value is greater than num
if (obj[key] > num) {
// Delete the "key" property
delete obj.key;
}
}
// The above will give you this:
let incorrect = {
keyToKill: 7,
keyToLeaveAlone: 3
}
如果要删除值大于num
的属性,请执行以下操作:
// If you do the following instead:
for (let key in obj) {
// If I find a key whose value is greater than num
if (obj[key] > num) {
// Delete the property who's value is greater than num
delete obj[key];
}
}
// You'll get this
let correct = {
key: "hello",
keyToLeaveAlone: 3
}
答案 2 :(得分:0)
您需要使用括号表示法property accessor将变量用作值。
delete obj[key];
// ^ ^
function removeNumbersLargerThan(num, obj) {
for (var key in obj) {
if (obj[key] > num) {
delete obj[key];
}
}
return obj;
}
var obj = { a: 8, b: 2, c: 'montana' };
removeNumbersLargerThan(5, obj);
console.log(obj); // { b: 2, c: 'montana' }

答案 3 :(得分:0)
function removeNumbersLargerThan(num, obj) {
for(var key in obj){
if(obj[key] > num){
delete obj.key;
}
}
return obj;
}
var obj = {
a: 8,
b: 2,
c: 'montana'
}
removeNumbersLargerThan(5, obj);
console.log(obj); // --> { b: 2, c: 'montana' }

function removeNumbersLargerThan(num, obj) {
for(var key in obj){
if(obj[key] > num){
delete obj[key];
}
}
return obj;
}
var obj = {
a: 8,
b: 2,
c: 'montana'
}
removeNumbersLargerThan(5, obj);
console.log(obj); // --> { b: 2, c: 'montana' }