【问题标题】:How to skip elements where value of object is present in array?如何跳过数组中存在对象值的元素?
【发布时间】:2022-10-14 16:18:45
【问题描述】:

这是一个创建新对象过滤对象的函数:

function filterErrors(errors: any) {
    const obj:any = {};
    const words = [
      'Unknown format',
      'There is no number',
    ] as string[];

    for (const [key, value] of Object.entries(errors)) {
      const filtered = (value as string[]).filter(
        (item: string) => !words.includes(item)
      );

      if (filtered.length > 0) {
        obj[key] = filtered;
      }
    }

    return obj;
  }


let errors = {
    "1": ["'D54'. Unknown format."],
    "2": ["'K53'. There is no number."]
}

console.log(filterErrors(errors));

结果,我需要获取一个对象,其中值不在words 中。但现在我得到了所有数据。

【问题讨论】:

  • 不,我需要找到单词的一部分,所以 'Unknown format' 应该跳过元素 'D54'. Unknown format.

标签: javascript


【解决方案1】:

您的代码似乎是TypeScript,我将其转换为JavaScript 并为您提供解决方案

function filterErrors(errors ) {
    const obj= {};
    const words = [
      'Unknown format',
      'There is no number'
    ];
    
    let keys = Object.keys(errors)
    keys.forEach(k => {
      let contains = false
      for(let w of words){
        if(errors[k][0].includes(w)){
          contains = true;
          break;
        }
      } 
      if(!contains){
       obj[k] = errors[k]
      }
    })

    return obj;
  }


let errors = {
    "1": ["'D54'. Unknown format."],
    "2": ["'K53'. There is no number."],
    "3": ["'K54'. Test Data"]
}

console.log(filterErrors(errors));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 2021-10-28
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 2017-12-09
    相关资源
    最近更新 更多