首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组中的StartsWith()

数组中的StartsWith()
EN

Stack Overflow用户
提问于 2022-07-20 14:10:21
回答 2查看 198关注 0票数 0

基本上,我使用的是'FLD_STR_101‘值来检索我的文件。我有不同的字段,以'FLD_STR_‘开头,所以我不能将if语句建立在这个特定字段上。我想要做的是用这样的FLD_STR...something映射和检索字段

代码语言:javascript
复制
values[startWith('FLD_STR_')]

因此,我将能够检查字段是否以FLD_STR_开头,然后我将能够根据每个字段的类型(文件、文本.)区分该字段。

这是我举的例子,你可以理解。我似乎不能像这样在数组中注入startsWith()。对如何做到这一点有什么线索吗?

代码语言:javascript
复制
    const test =Object.entries(values['FLD_STR_101']).map((entry, key) =>( {
            test: entry[0],
            test2:key
    }))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-20 14:21:48

一个想法可以是

  1. 筛选与预期匹配的对象键
  2. 在这些已过滤的密钥上使用array.forEach方法循环
  3. 在valuesfilteredKey上执行地图方法

代码语言:javascript
复制
const values = {
  FLD_STR_101: {
    test: 1,
    type: 'type1'
  },
  FLD_STR_102: {
    test2: 1,
    type: 'type1'
  },
  FLD_STR_103_NO_TYPE: {
    test2: 1
  },
  NOTFLD_STR_102: {
    test3: 1
  }
};

let test = [];

Object.keys(values)
  .filter(key =>  key.startsWith('FLD_STR_') && values[key]['type'])
  .forEach(filteredKey => {
    test = [
       ...test, 
       ...Object.entries(values[filteredKey]).map((entry, key) => ({
         test: entry[0],
         test2: key
       }))]
    });

console.log(test);

票数 0
EN

Stack Overflow用户

发布于 2022-07-20 14:37:45

您已经快到了,您可以使用"startWidth“方法,但不直接尝试与数组方法过滤器相结合,它更干净、更易读。

代码语言:javascript
复制
const values = {
  FLD_STR_101: {
    test: 1
  },
  FLD_STR_102: {
    test2: 2
  },
  INVALID_STR_103: {
    test3: 3
  }
};
const startWith = (str, prefix) =>  {
  return str.slice(0, prefix.length) === prefix;
}

const test = Object.entries(values)
  .filter(([key]) => startWith(key, 'FLD_STR_'))
  .map((entry, key) =>( {
    test: entry[0],
    test2:key
  }))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73053215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档