如果对象不存在于数组中,则从对象中删除属性

时间:2019-01-24 11:18:35

标签: javascript ecmascript-6

这是我要用于从数据库中获取数据的对象。

let productsIdCount = { 
    '9r854asdsdsdf16351351asf': 54,
    '9r854asdsdsdf16351351asp': 55,
    '9r854asdsdsdf16351351asi': 114,
    '9r854asdsdsdf16351351asm': 22,
    '9r854asdsdsdf16351351asc': 42,
    '9r854asdsdsdf16351351ase': 29,
    '9r854asdsdsdf16351351asw': 42,
    '9r854asdsdsdf16351351ass': 19,
    '9r854asdsdsdf16351351asy': 111,
}

这是我要比较的数据:

let pidArray = [ 
  '9r854asdsdsdf16351351asi',
  '9r854asdsdsdf16351351asw',
  '9r854asdsdsdf16351351ass',
  '9r854asdsdsdf16351351asp',
  '9r854asdsdsdf16351351asy',
]

因此,如果pidArray具有一个在productIdCount中不存在的ID,那么我想从该对象中删除该ID属性和值对。 或者只是创建另一个对象,并在数组中添加具有相同ID的prop和value对。

2 个答案:

答案 0 :(得分:4)

只需循环即可创建新对象:

const result = {};
for (const prop in productsIdCount)
    if (pidArray.includes(prop))
        result[prop] = productsIdCount[prop];

答案 1 :(得分:0)

尝试一下:

let productsIdCount = { 
    '9r854asdsdsdf16351351asf': 54,
    '9r854asdsdsdf16351351asp': 55,
    '9r854asdsdsdf16351351asi': 114,
    '9r854asdsdsdf16351351asm': 22,
    '9r854asdsdsdf16351351asc': 42,
    '9r854asdsdsdf16351351ase': 29,
    '9r854asdsdsdf16351351asw': 42,
    '9r854asdsdsdf16351351ass': 19,
    '9r854asdsdsdf16351351asy': 111,
}

let pidArray = [ 
  '9r854asdsdsdf16351351asi',
  '9r854asdsdsdf16351351asw',
  '9r854asdsdsdf16351351ass',
  '9r854asdsdsdf16351351asp',
  '9r854asdsdsdf16351351asy',
]

const f = (objValues, listOfPids) => {
  const filteredValue = {};
  for(pid in objValues) 
    if (listOfPids.includes(pid)) 
      filteredValue[pid] = objValues[pid]
  return filteredValue;
}

const newValue = f(productsIdCount, pidArray);

console.log(newValue);

enter image description here