首页 > 试题广场 >

输出对象中值大于2的key的数组

[填空题]
输出对象中值大于2的key的数组
var data = {a: 1, b: 2, c: 3, d: 4};
Object.keys(data).filter(function(x) { return 1;})
期待输出:[“c”,”d”]
Object.keys(Object)
Array.filter(function)
Object是包含属性和方法的对象, 可以是创建的对象或现有文档对象模型 (DOM) 对象。
Object.keys(object)的返回值是 一个数组,其中包含对象的可枚举属性和方法的名称。
Array.filter(function)对数组进行过滤返回符合条件的数组。
Object.keys(data)的返回值为数组["a","b","c","d"],经过 filter(function(x) { return ; })过滤,返回值大于2的key的数组。x为返回数组的属性名称即“a"、"b"、"c"、“d”,则对应的属性值为data[x],比较语句为data[x]>2。
编辑于 2016-07-25 21:35:52 回复(0)
 x>"b"不对吗
发表于 2015-09-03 17:50:51 回复(5)
这是对js过滤器,以及获取对象属性的应用;
通过Object.keys(data)获取data中的属性数组;
对属性数组进行过滤器的操作,在filter中进行一定条件的判定,如数值大于2,而后过滤器就将不符合条件的数据过滤掉,返回符合条件的属性。
Object.keys(data).filter(、
function(x) { 
    return data[x]>2;
})
我写的时候没注意后面还有分号。。悲剧的写错了。。
发表于 2015-08-20 07:24:58 回复(6)

首先Object.keys(data)返回的是data可被枚举的属性,为 ["a", "b", "c", "d"],对这个数组中的每一个元素用filter方法过滤,data["x"]等价于data.x,就是表示data对象的x属性的值,注意这里的data["x"]中的x是带引号的
发表于 2015-09-12 14:51:06 回复(8)
习惯性加了俩空格..
发表于 2017-11-25 17:36:48 回复(2)
另一种方法, filter的第二个参数是index, 这里可以用arguments[1]来取到
Object.keys(data).filter(function(x) { return arguments[1]>=2})

编辑于 2015-08-27 15:24:58 回复(6)
x > 'b' 也ok呀。大家怎么看。

发表于 2016-09-07 10:05:36 回复(2)

filter()方法
返回的数组元素是调用的数组的一个子集。
例:

var a = [1, 2, 3, 4];
small = a.filter(function(x) {
return x > 2
});//[3,4]

Object.keys()方法
返回一个数组,这个数组由对象中可枚举的自有属性的名称组成。
例:

var data = {a: 1, b: 2, c: 3, d: 4};
var arr = Object.keys(data);
console.log(arr);//[ 'a', 'b', 'c', 'd' ]

所以原题可以改写为:

var data = {a: 1, b: 2, c: 3, d: 4};
var arr = Object.keys(data);
arr.filter(function(x) {
    return data[x] > 2;
});

其中x表示数组arr中的元素,比如"c",而data["c"]取得对象data的c属性3,3>2所以x="c"满足条件是返回数组的一部分

发表于 2017-06-12 19:16:21 回复(0)
Object.keys(object)  获取所有可枚举的属性;
Array.filter(function) 筛选出符合条件的元素,返回通过测试的元素组成的数组。
x为返回数组的属性名称即“a"、"b"、"c"、“d”,data[x]为值。
发表于 2016-12-09 17:50:58 回复(0)
这道题居然那个大于一定要写成字符实体才能成功,写成>这个简直不科学
发表于 2015-12-15 21:13:03 回复(0)
data[x]>2

编辑于 2015-08-18 17:32:42 回复(0)
1)filter属于数组的迭代方法。而data是对象,对象无法调用数组的方法。keys方法可以取得所有可以“枚举的”的“实例属性”。
console.log(Object.keys(data)) = ["a", "b", "c", "d"];  //对象data的可枚举实例属性的集合。
2)此时式子变成了下面这样:
console.log(["a", "b", "c", "d"].filter(function(x) { return x > 2;})) //输出空  ,因为字母字符串与数值比较,还会被转化成NaN,
此时应该通过最开始的对象 data结合对象的属性数组,取对象的值。 x是当前元素的值:
        x = "a"   data["a"] = 1,
         x = "b"   data["b"] = 2,
         x = "c"   data["c"] = 3,
         x = "d"   data["d"] = 4,
ps:filter方法的用法:http://www.runoob.com/jsref/jsref-filter.html
3)总结过程如下:①对象的属性组成数组
                              ②通过对象的属性数组,去调用对象的值
4)套路套路套路,全是套路。
发表于 2017-03-23 00:55:14 回复(2)
x.charCodeAt()-98>0
发表于 2022-04-13 22:38:14 回复(0)
是不是玩不起?
发表于 2020-06-23 13:45:52 回复(0)
什么情况
发表于 2019-08-28 16:26:44 回复(0)
乱码……我佛了
发表于 2019-03-04 10:44:39 回复(0)
我不明白它的答案跟我的有什么区别
发表于 2018-08-29 20:23:42 回复(1)
是的
发表于 2018-03-28 08:49:25 回复(0)
我小叮当无话可说
发表于 2018-03-23 20:52:46 回复(0)
这个为什么不对了?求解答,看着都一样的
发表于 2018-03-19 21:53:37 回复(0)