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。它附带一个默认执行时间。:)