首页 > 解决方案 > 使用 findIndex 检查对象数组中存在的元素数组 - 打字稿

问题描述

我正在尝试从对象数组中存在的属性数组中检查哪些属性不存在。

我的对象是这样的:

var tempObj=[{id: '1', color: 'red, blue, green', age: 27},{id: '2', color: 'black, orange, yellow', age: 75}];
var tempColor = ['red', 'yellow', 'white'];

这里 tempColor 数组包含三个元素,我需要检查 tempObj 中存在的这些元素。这里 tempObj 颜色属性值被逗号化了,所以我在这里感到困惑。基本上对于单元素检查,我曾经这样做过

var eleExists= this.tempObj.findIndex(obj => obj.age === 27) >= 0;

但是对于用逗号替换值检查的数组元素没有想法检查,所以寻求一些帮助或指导。

标签: javascripttypescript

解决方案


  const data = [
    {id: '1', color: 'red, blue, green', age: 27},
    {id: '2', color: 'black, orange, yellow', age: 75},
  ]

  const colors = ['red', 'yellow', 'white']

  function getNeverUsedColors(colors, data) {
    return colors.filter(color => !data.some(obj => obj.color.split(', ').includes(color)))
  }

  console.log(getNeverUsedColors(colors, data))
  // returns ['white']

推荐阅读