简体   繁体   English

Node js检查元素是否存在并返回一个值

[英]Node js check if element exist and return a value

  1. How to check on "info" if "Test 3" exists?如果存在“测试 3”,如何检查“信息”?
  2. And if it does return the "name" and the "Test 3" values?如果它确实返回“名称”和“测试 3”值?
const z = {
  data: {
    value: [{
      name: 'Test1',
      info: {
        'Test 1': 'Test 1',
        'Test 3': 'Testing 3',
        'Test 4': 'Testing 4',
        'Test 5': 'Testing 5'
      },
    },
    {
      name: 'Test2',
      info: {
        'Test 1': 'Test 1',
        'Test 4': 'Testing 4',
      },
    },
    {
      name: 'Test3',
      info: {
        'Test 1': 'Test 1',
        'Test 3': 'Testing 3',
        'Test 5': 'Testing 5'
      }
    }]
  }
}

I tried this to filter on the name Test for the Objects and then check if it exists and print it.我试过这个过滤对象的名称测试,然后检查它是否存在并打印它。

const u = z.data.value.filter(t => Object.keys(t.info).includes("Test 3"))
if (u){
    console.log(u)
}

I am trying to get the name value back into an array, if "Test 3" is part of the info section.如果“测试 3”是信息部分的一部分,我正在尝试将名称值返回到数组中。

[
 'Test1',
 'Test3'
]

You're almost there, you just need to add map after filter to get the final result.你快到了,你只需要在filter后添加map即可获得最终结果。

 const z = { data: { value: [{ name: 'Test1', info: { 'Test 1': 'Test 1', 'Test 3': 'Testing 3', 'Test 4': 'Testing 4', 'Test 5': 'Testing 5' }, }, { name: 'Test2', info: { 'Test 1': 'Test 1', 'Test 4': 'Testing 4', }, }, { name: 'Test3', info: { 'Test 1': 'Test 1', 'Test 3': 'Testing 3', 'Test 5': 'Testing 5' } }] } } const u = z.data.value.filter(t => Object.keys(t.info).includes("Test 3")).map(t => t.name) console.log(u)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM