使用过滤器返回特定值

时间:2015-09-08 03:06:45

标签: javascript

假设你有一个对象数组:

UpdateText.replace(/'/g, '\\\'')

并且您只想要每个对象的var arr = [{ a: 1 }, { a: 2 }, { a: 3 }]; 属性的值:

a

您可以使用哪种功能方法?我尝试过使用过滤器:

[1, 2, 3]

但当然,过滤器会返回整个对象。有没有其他方法可以用来实现上面的结果?我的意思是,我可以使用arr.filter(x => x.a); ,我猜或者是for循环,但是有更好的方法吗?如果我想要所有属性值,forEach会起作用,但我实际上想要过滤掉其中的一些属性。

2 个答案:

答案 0 :(得分:2)

您希望map转换每个元素的类型。没有神奇的过滤器可以做地图;如果您同时要filtermap,则需要filter 然后 map。这些东西是为了有目的地建立起来的:

var arr = [{ a: 1 }, { a: 2 }, { a: 3 }];

arr.filter(x => x.a > 1).map(x => x.a) // => [2, 3]

答案 1 :(得分:0)

Javascript以不同的方式获得相同的结果是件好事。

但更好的方法是使用常规for循环(检查Why most JavaScript native functions are slower than their native implementations?

所以你可以这样做:



var arr = [{ a: 1 }, { a: 2 }, { a: 3 }];
var newArray = [];
for(var i in arr) { // or you can use: for(var i=0;i<arr.length;i++)
	var newArrValue = arr[i].a;
	if(newArrValue<3) // or some other if conditions to filter the values
	newArray.push(newArrValue);
}
console.log(newArray);
// and you will get [1, 2] as a result with newArrValue<3 if condition
&#13;
&#13;
&#13;

相关问题