我有以下对象:
@media all and (min-width: 680px) {
.container {
max-width: 1220px;
text-align:left;
background:#FFF;
overflow:hidden;
position:relative;
box-shadow: 0px 2px 5px 0px #888888;
margin: 0 auto;
}
section {
float: left;
width: 67.21311475%;
padding-left:1.63934426%;
padding-right:1.63934426%;
padding-top:15px;
padding-bottom:15px;
background:#FFF;
position:relative;
}
aside {
float: right;
width: 26.22950819%;
padding-left:1.63934426%;
padding-right:1.63934426%;
padding-top:15px;
padding-bottom:15px;
background:#F9F9F9;
position:relative;
}
}
我希望搜索“马铃薯”的数据并返回“蔬菜”。我希望使用过滤器或地图,但我正在努力学习语法。香草javascript请。
答案 0 :(得分:1)
解决方案
var res = data.map(
x => x.basket.indexOf("potato") === -1 ? undefined : x.type
).filter(x => x !== undefined);
res
将是所有匹配type
的列表(如果多次包含相同的值,则可以有多个。如果您确定,可以使用res[0]
这些值是唯一的,在这种情况下,当它不存在时,您将获得type
值或undefined
。
答案 1 :(得分:0)
使用Array#find函数迭代每个对象,并使用Array#some或Array#includes迭代每个购物篮并检查是否有名称为potato
的商品。
const data = [
{
type: "fruit",
basket: ["apple", "pear", "orange"]
},
{
type: "vegetable",
basket: ["carrot", "potato"]
}
];
const itemWithSome = data.find(item => item.basket.some(i => i === 'potato'));
console.log(itemWithSome.type);
const itemWithIncludes = data.find(item => item.basket.includes('potato'));
console.log(itemWithIncludes.type);
答案 2 :(得分:0)
您可以将Array#find
与Array#includes
一起使用。
var data = [{ type: "fruit", basket: ["apple", "pear", "orange"] }, { type: "vegetable", basket: ["carrot", "potato"] }],
find = 'potato';
console.log(data.find(o => o.basket.includes(find)).type);