编写函数以获取键/值对和函数的对象,并返回键匹配的值数组

时间:2015-12-15 23:46:41

标签: javascript arrays javascript-objects

我需要创建一个javascript函数,它接受键/值对的对象 一个过滤函数,它接受一个参数并返回一个布尔值。该函数应该从过滤器( key )为真的对象返回一个包含 values 的数组。

所以我会有一个功能:

function filterValuesByKeys(obj, filter){
//returns array
}

我最常坚持的是基于键循环对象,如果键匹配/满足参数,则将值添加到数组中。我可以打印所有键,但我不知道如何在循环中单独获取每个键。

2 个答案:

答案 0 :(得分:1)

在循环浏览JavaScript对象时,您需要小心您要完成的任务。使用for (var key in obj)将遍历所有键,以及对象原型链中的任何键。

只获取对象"拥有"的一种方法属性使用for / in,但随后检查

for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
        //do stuff
    }
}

传统循环的另一个选择是使用Object.keys(obj)来获取obj自己的密钥。然后,您可以定期循环遍历该数组,甚至可以在其上使用forEach

var keys = Object.keys(obj);
keys.forEach(function(key) {
    // do stuff 
});

使用本机功能数组方法还有其他一些巧妙的方法,比如reduce。我会把它留给你。

答案 1 :(得分:0)

MFMailComposeViewControllerDelegate