过滤数组(JS)

时间:2018-05-04 22:04:34

标签: javascript arrays filter

我无法过滤包含对象的数组。非常感谢您的解释。

说明:

//使用filter(),只返回下面的人数组中的朋友。 //将其分配给名为' trueFriends'。

的变量

我的解决方案:

var trueFriends = [];

peopleIknow.filter(function(){
  for(var i = 0; i < peopleIknow.length; i++){
    if (peopleIknow[i].friend == true){
      trueFriends.push(peopleIknow[i]);
    }
  }
});

var peopleIknow = [
  { name: "Steve", friend: true },
  { name: "Dan", friend: false },
  { name: "Bart", friend: true },
  { name: "Sarah", friend: false },
  { name: "Michelle", friend: false },
  { name: "Holly", friend: true }
];

5 个答案:

答案 0 :(得分:2)

您不应在for中使用filter循环。 Filter迭代数组并根据条件返回所有元素

&#13;
&#13;
var peopleIknow = [
  { name: "Steve", friend: true },
  { name: "Dan", friend: false },
  { name: "Bart", friend: true },
  { name: "Sarah", friend: false },
  { name: "Michelle", friend: false },
  { name: "Holly", friend: true }
];

var o = peopleIknow.filter(e=> e.friend );

console.log(o)
&#13;
&#13;
&#13;

答案 1 :(得分:1)

for函数中使用filter循环违背了目的 - 尝试使用filter函数进行迭代。在声明数组之前,你也不应该尝试filter数组。

filter函数的第一个参数是被迭代的项,并且您只对friend属性感兴趣,因此您只能提取friend属性。如果friend为真,那么您希望将true返回到filter函数,以便它包含在最终数组中 - 否则,返回false。因此,只需按原样返回friend属性。

const peopleIknow = [
  { name: "Steve", friend: true },
  { name: "Dan", friend: false },
  { name: "Bart", friend: true },
  { name: "Sarah", friend: false },
  { name: "Michelle", friend: false },
  { name: "Holly", friend: true }
];

const trueFriends = peopleIknow.filter(({ friend }) => friend);
console.log(trueFriends);

答案 2 :(得分:0)

您可以使用layer_1 = tf.add(tf.tensordot(tf.cast(x, tf.float32), weights['h1'], [[2], [0]]), biases['b1']) reduce()来执行相同操作。

这是使用filter()方法。对于数组的每个元素,函数的减少和过滤运行一次。

reduce()

答案 3 :(得分:0)

不要在过滤器功能中运行for循环。过滤器非常易于使用。如果传递给filter的函数的结果为true,则将该元素添加到返回值。这就是你要找的东西!

&#13;
&#13;
var peopleIknow = [
  { name: "Steve", friend: true },
  { name: "Dan", friend: false },
  { name: "Bart", friend: true },
  { name: "Sarah", friend: false },
  { name: "Michelle", friend: false },
  { name: "Holly", friend: true }
];

var trueFriends = [];

//                                         only the friends where person.friend is truthy 
trueFriends = peopleIknow.filter(person => person.friend);

console.log(trueFriends);
&#13;
&#13;
&#13;

答案 4 :(得分:0)

您创建了过滤器并应用过滤器在其中执行的操作,此代码将按您的意愿运行。

&#13;
&#13;
var trueFriends = [];
var peopleIknow = [
      { name: "Steve", friend: true },
      { name: "Dan", friend: false },
      { name: "Bart", friend: true },
      { name: "Sarah", friend: false },
      { name: "Michelle", friend: false },
      { name: "Holly", friend: true }
    ];
    
   trueFriends = peopleIknow.filter(function(item){
      return item.friend});
    console.log(trueFriends)
&#13;
&#13;
&#13;