根据对象数组检查字符串数组,并根据每种情况检查 return
Check array of strings against array of objects and return something per each case
我有一个简单的数组问题:
我有两个不同的数组:一个是字符串,一个是对象。
我需要以某种方式相互检查:对象数组需要检查对象的 属性 是否包含在字符串数组中,并且 return 在每种情况下都有一个响应。
const colors = ["blue", "pink", "red", "green", "yellow", "orange", "white"]
const objColors = [{name:"pink", value: true}, {name:"green", value: true}, {name: "white", value: false}]
我预期的响应数组类似于:
const res = [false, true, false, true, false, false, false]
我不知道如何解决这个问题,因为我已经尝试了好几件事都没有成功。
我尝试了两次迭代,但它给了我一个错误的回应。
我也试过方法包括,但我只能检查我的 objColors 数组,因此我没有得到我需要检查的所有情况的响应
let res = objects.map(x => (strings.includes(x.name)))
有人可以提示我如何检查它们以获得所需的响应吗?
提前致谢
首先将对象数组转换为更易于检查的结构 - 也许是一个 Map,或者一组为真的值。然后你可以映射颜色数组并查找关联的值。
const colors = ["blue", "pink", "red", "green", "yellow", "orange", "white"];
const objColors = [{name:"pink", value: true}, {name:"green", value: true}, {name: "white", value: false}];
const trueColors = new Set(
objColors
.filter(({ value }) => value)
.map(({ name }) => name)
);
const res = colors.map(color => trueColors.has(color));
console.log(res);
一个对象的方法。
const
colors = ["blue", "pink", "red", "green", "yellow", "orange", "white"],
objColors = [{ name: "pink", value: true }, { name: "green", value: true }, { name: "white", value: false }],
wanted = Object.fromEntries(objColors.map(({ name, value }) => [name, value])),
result = colors.map(c => !!wanted[c]);
console.log(result);
我有一个简单的数组问题: 我有两个不同的数组:一个是字符串,一个是对象。 我需要以某种方式相互检查:对象数组需要检查对象的 属性 是否包含在字符串数组中,并且 return 在每种情况下都有一个响应。
const colors = ["blue", "pink", "red", "green", "yellow", "orange", "white"]
const objColors = [{name:"pink", value: true}, {name:"green", value: true}, {name: "white", value: false}]
我预期的响应数组类似于:
const res = [false, true, false, true, false, false, false]
我不知道如何解决这个问题,因为我已经尝试了好几件事都没有成功。 我尝试了两次迭代,但它给了我一个错误的回应。 我也试过方法包括,但我只能检查我的 objColors 数组,因此我没有得到我需要检查的所有情况的响应
let res = objects.map(x => (strings.includes(x.name)))
有人可以提示我如何检查它们以获得所需的响应吗? 提前致谢
首先将对象数组转换为更易于检查的结构 - 也许是一个 Map,或者一组为真的值。然后你可以映射颜色数组并查找关联的值。
const colors = ["blue", "pink", "red", "green", "yellow", "orange", "white"];
const objColors = [{name:"pink", value: true}, {name:"green", value: true}, {name: "white", value: false}];
const trueColors = new Set(
objColors
.filter(({ value }) => value)
.map(({ name }) => name)
);
const res = colors.map(color => trueColors.has(color));
console.log(res);
一个对象的方法。
const
colors = ["blue", "pink", "red", "green", "yellow", "orange", "white"],
objColors = [{ name: "pink", value: true }, { name: "green", value: true }, { name: "white", value: false }],
wanted = Object.fromEntries(objColors.map(({ name, value }) => [name, value])),
result = colors.map(c => !!wanted[c]);
console.log(result);