一切都是真的(中级Javascript算法)

问题

检查谓词(第二个参数)在集合(第一个参数)的所有元素上是否是真值。

换句话说,你被赋予一个对象的数组集合。谓词 pre 将是一个对象属性,如果它的值是 truthy,你需要返回 true。否则,返回false。

在JavaScript中,truthy值是指在布尔上下文中评估时转化为true的值。

记住,你可以通过点符号或[]符号访问对象属性。

我的尝试

function truthCheck(collection, pre) {
  
  let count = 0;

    for(let x of collection){

      for(let i = 0; i < x.length; i++){

        if(x[i].hasOwnProperty(pre)){
        count++
        };

      }
    }
      if(count == collection.length){
      return true;
      }
      return false;
      }

truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex");

我的要求

  1. 请修正我的代码。
  2. 请提供一个最佳解决方案,或 “你会怎么做”。

非常感谢。

解决方案:

所以我从Eugen的文章中得到了一些启发。我们需要更进一步,检查每个值的真实性,而不仅仅是键是否存在。

const arr = [{
  "user": "Tinky-Winky",
  "sex": "male"
}, {
  "user": "Dipsy",
  "sex": "male"
}];

const arr2 = [{
  "user": "Laa-Laa",
  "sex": 1
}, {
  "user": "Po",
  "sex": undefined,
}];

const arg = 'sex';

const result = arr.every(item => Object.keys(item).every(value => item[value]))
console.log(result)

const result2 = arr2.every(item => Object.keys(item).every(value => item[value]))
console.log(result2)

给TA打赏
共{{data.count}}人
人已打赏
未分类

多部分表格,字段文件的顺序

2022-9-9 1:28:35

未分类

grep pygdal

2022-9-9 1:39:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索