Javascript 如果对象没有';不存在于数组中

Javascript 如果对象没有';不存在于数组中,javascript,ecmascript-6,Javascript,Ecmascript 6,这是我想用来从数据库中获取数据的对象 let productsIdCount = { '9r854asdsdsdf16351351asf': 54, '9r854asdsdsdf16351351asp': 55, '9r854asdsdsdf16351351asi': 114, '9r854asdsdsdf16351351asm': 22, '9r854asdsdsdf16351351asc': 42, '9r854asdsdsdf1635135

这是我想用来从数据库中获取数据的对象

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具有productsIdCount中不存在的id,那么我希望从对象中删除该id属性和值对。
或者只是创建另一个对象,并在数组中添加具有相同id的属性和值对。

只需循环创建新对象:

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

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);

如果productsIdCount中不存在id,那么我想从对象中删除该id属性和值对,这是什么意思?无法删除不存在的内容…例如。数组中不存在从对象获取的id“9R854ASDSDF16351351ASC”。因此,我想用它的值对'9R854ASDSDF16351351ASC':42将其从对象中删除。我还想从新创建的对象中获取前三个元素。如果有必要,我将更新问题。@被动对象没有顺序,因此没有“前三个”。也许您指的是一个对象,它只有
pidArray
中的前三个?请注意这一点。如果已知所有
pidArray
值存在,您可以执行类似于
pidArray.slice(3).includes(prop)
的操作。否则,您可能希望在
pidArray
上循环,并在找到作为对象属性的三个元素时停止。情况并非如此。然后我应该对对象进行排序和切片(就像它是一个数组一样)。已经找到了解决方案。谢谢,您不能对对象进行排序和切片。您应该以相反的方式进行迭代:
让i=0;for(pid数组中的const pid)if(productsIdCount中的pid){result[pid]=productsIdCount[pid];if(++i>=3)break;}
如何计算for循环完成的时间。如果能提供外部链接,我将不胜感激。@reactive,我使用sublime text 3在node中运行js。它附带一个默认执行时间。:)