根据属性

时间:2018-01-26 20:09:25

标签: javascript arrays google-apps-script filtering

我存储的数据是二维数组。

下面的一个元素。 (不是赋值运算符)

someObjArray[5] === [{lastname:"foo", firstname:"bar", grade:10, userId:"foobar1234"},...]

对于特定的上述变量,我想过滤userId 我试图这样做。

var test = stuArray[5].filter(function(item) {
    return item['userId'];
});

导致:

test === [{lastname:"foo", firstname:"bar", grade:10, userId:"foobar1234"},...]

期望的结果

test === ["foobar1234",...]

我也尝试使用具有相同结果的点运算符。

2 个答案:

答案 0 :(得分:2)

我认为过滤器不是你想要的。

您传递给filter方法的函数(在您的情况下是非匿名的,但您也可以使用匿名函数)需要返回true或false。这就是方法“过滤”你的数组的方法 - 它给你一个数组传递过滤器的数组,或者当作为参数传递给过滤器的函数时返回true。

请注意,这不会更改原始数组。

你应该使用的是非常相似的map()函数。

请注意,map()与filter()一样,不会更改原始数组。

答案 1 :(得分:1)

你可以这样做:

var someObjArray = [{lastname:"foo", firstname:"bar", grade:10, userId:"foobar1234"}];
console.log(someObjArray.map(s => s.userId));

Online demo (jsFiddle)