【问题标题】:How can I create a function that check boolean field in array of object javascript如何创建一个检查对象 javascript 数组中的布尔字段的函数
【发布时间】:2021-05-05 11:27:30
【问题描述】:

最终目标:如果所有字段都是true最后一个object.field必须改为true

const badges = [

  { name: "peter", given : true, points: 10 },
    { name: "Alice", given : true,  points: 100 },
    { name: "Hugo", given: true,  points: 100 },
    { name: "Salah", given: false,  points: 500 },
    { name: "Rui", given: false, points: 1000 },
    { name: "Jimena", given: false,  points: 10000 }

]

我的代码:

const badges = [
    { name: "peter", given : true, points: 10 },
    { name: "Alice", given : true,  points: 100 },
    { name: "Hugo", given: true,  points: 100 },
    { name: "Salah", given: false,  points: 500 },
    { name: "Rui", given: false, points: 1000 },
    { name: "Jimena", given: false,  points: 10000 }
]

let count = 0
badges.forEach((ele, index) => {
  const l = badges.length
  ele.given === true ? count = count + 1 : count
  count == l - 1 ? badges[l - 1].given = true : badges[l - 1].given
})

console.log(badges)

我想要实现的目标: 是一个更通用的函数,可以在任何地方工作,但我找不到方法,或者可能是最简单的方法。

【问题讨论】:

    标签: javascript arrays function object iteration


    【解决方案1】:

    只要提供的field 是布尔值,这将起作用。使用slice 获取除最后一个元素之外的所有元素,使用every 检查所有元素是否符合条件。

    const badges = [
    
      { name: "peter", given : true, points: 10 },
        { name: "Alice", given : true,  points: 100 },
        { name: "Hugo", given: true,  points: 100 },
        { name: "Salah", given: true,  points: 500 },
        { name: "Rui", given: true, points: 1000 },
        { name: "Jimena", given: false,  points: 10000 }
    
    ]
    
    function check(input, field) {
      var result = input.slice(0,input.length-1).every(x => x[field]);
      if(result) {
        badges[input.length-1][field] = true;
      }
    }
    
    check(badges,"given");
    console.log(badges)

    【讨论】:

    • 我正在努力更好地理解您的代码,请您告诉我 x[field]x.field 是否相同案子?以及为什么当我在函数内部执行 console.log(badges[input.length-1][field]) 时,它与在外部执行它的价值不同?谢谢
    • 是的 x.fieldx["field"] 是相同的,尽管后者允许您使用字符串引用该字段(请参阅“方括号表示法”)。你的第二个问题不清楚。在本例中,您是指在调用check 之前还是之后?该方法正在更新一个值
    • 你的意思是badges[index][field]?如果我在函数范围之外使用它不起作用,我只是想了解代码以在将来在另一个函数中使用它,您是否有任何信息链接以更好地了解如何在对象数组中使用迭代? .@jamiec
    猜你喜欢
    • 2021-02-26
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多