【问题标题】:Loop Object that has Array [closed]具有数组的循环对象[关闭]
【发布时间】:2021-04-02 03:37:07
【问题描述】:

如何判断一个对象是否有值?我的对象如下所示:我必须遍历对象数组并检查任何数组的值是否包含“SPOUSE”。如果存在,则设置标志配偶Exits = true 并将数字(在本例中为4)存储在变量配偶索引中

myObj = {
    "CHIP": [
        "CHILD5"
    ],
    "APTC/CSR": [
        "SELF1",
        "CHILD2",
        "CHILD3",
        "SPOUSE4"
    ]
}

【问题讨论】:

  • 对象属性是否总是按照它们在示例中出现的方式命名? SPOUSE 值是否总是采用SPOUSE<integer> 的形式?您是否考虑过使用Array.findString.test
  • @fubar -- 是的,配偶总是有一个索引。我需要将索引存储在一个单独的变量中
  • 我需要帮助。请不要关闭。让我知道有什么不清楚的地方
  • 更正,它是String.matchRegExp.test
  • 如何进入 Object 的数组?

标签: javascript ecmascript-6


【解决方案1】:

您可以使用Object.valuesArray.prototype.flat 创建一个包含所有字符串的数组,然后使用RegExp.prototype.test 找到匹配/SPOUSE(\d+)/i 的元素。如果存在,您可以从捕获组中获取配偶编号。如果没有匹配,返回-1

const myObj = { "CHIP": ["CHILD5"], "APTC/CSR": ["SELF1", "CHILD2", "CHILD3", "SPOUSE4"] }

const regex = /SPOUSE(\d+)/i
const spouse = Object.values(myObj)
  .flat()
  .find((el) => regex.test(el))

const spouseIndex = spouse ? spouse.match(regex)[1] : -1
const spouseExists = spouseIndex != -1
console.log('Spouse exists:', spouseExists)
console.log('Spouse index:', spouseIndex)

【讨论】:

  • 谢谢。但我不能使用 es6 方法,因为它必须支持 ie9 浏览器
  • 使用polyfill
猜你喜欢
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多