我有一个这样的物体
const values = [
{firstValue: "Michael", secondValue: "Malkovich"},
{firstValue: "John", secondValue: "Doe"},
{firstValue: "James", secondValue: "Doe"}
];
还有另一个这样的对象
const incomingValues = {
Michael: true;
John: false;
James: true;
};
基于这两个对象,我需要制作另一个将基于 true 或 false 过滤值的对象,而我的最终对象必须是这样的
const filteredValues = [
{firstValue: "Michael", secondValue: "Malkovich"},
{firstValue: "James", secondValue: "Doe"}
];
您看到不再有John,因为它是错误的。我什至不知道如何比较这两个值。
答案 0 :(得分:0)
您可以使用Array对象中的filter
函数:
const filteredValues = values.filter(({ firstValue }) => incomingValues[firstValue]);
答案 1 :(得分:0)
尝试:
filteredValues = values.filter(item => {
return incomingValues[item.firstValue] === true;
});
答案 2 :(得分:0)
最佳答案在这里
Object.keys(incomingValues).filter(y=>incomingValues[y]).map(i=>values.find(u=>i==u.firstValue))
答案 3 :(得分:0)
按如下所示使用Array.prototype.filter() -
const filteredValues = values.filter(e => incomingValues[e.firstValue]);
答案 4 :(得分:0)
您可以为此使用ES6箭头功能。首先,您需要找到所有具有真实价值的钥匙。为此,您可以使用下面提到的代码。
const keys = Object.keys(incomingValues).filter(key => incomingValues[key]);
现在,第二步是过滤掉先前获得的基本键上的values数组。为此,您可以使用下面提到的代码。
const result = values.filter(value => keys2.indexOf(value.firstValue) >= 0 )
答案 5 :(得分:0)
尝试以下任一方法
let filteredValues = values.filter(value => {
return incomingValues[value.firstValue];
});
let fileredTypeTwo = values.filter(function (value) {
return incomingValues[value.firstValue];
});