假设你有一个对象数组:
UpdateText.replace(/'/g, '\\\'')
并且您只想要每个对象的var arr = [{ a: 1 }, { a: 2 }, { a: 3 }];
属性的值:
a
您可以使用哪种功能方法?我尝试过使用过滤器:
[1, 2, 3]
但当然,过滤器会返回整个对象。有没有其他方法可以用来实现上面的结果?我的意思是,我可以使用arr.filter(x => x.a);
,我猜或者是for循环,但是有更好的方法吗?如果我想要所有属性值,forEach
会起作用,但我实际上想要过滤掉其中的一些属性。
答案 0 :(得分:2)
您希望map
转换每个元素的类型。没有神奇的过滤器可以做地图;如果您同时要filter
和map
,则需要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;