我能得到一些关于这个场景的帮助吗?
- 字符串数组
- 一个映射字符串数组并为每个字符串应用一个名称、键并再添加一个对象“checked: false”的函数。
- 一个函数,它接受映射数组并根据传递的参数对其进行转换,将值存储到另一个数组并将“checked”更改为值“true”
例如:
const defaultProducts = [
"Laptop",
"Tablet",
"Phone",
"Ram",
"SSD",
"RasberyPi",
"Desktop",
"TV",
"Monitor"
];
const getDefaultProducts = () => {
return defaultProducts.map(products => {
return {
name: products,
checked: false
};
});
};
console.log(getDefaultProducts())
let forSale = []
function useProduct(product){
if(product in getDefaultProducts()) {
return{
product: forSale.push(product),
checked: true
};
};
return {product};
}
console.log(useProduct("Laptop"))
console.log(forSale)
returns
[ { name: 'Laptop', checked: false },
{ name: 'Tablet', checked: false },
{ name: 'Phone', checked: false },
{ name: 'Ram', checked: false },
{ name: 'SSD', checked: false },
{ name: 'RasberyPi', checked: false },
{ name: 'Desktop', checked: false },
{ name: 'TV', checked: false },
{ name: 'Monitor', checked: false } ]
{ product: 'Laptop' }
[]
应该返回:
[ { name: 'Laptop', checked: false },
{ name: 'Tablet', checked: false },
{ name: 'Phone', checked: false },
{ name: 'Ram', checked: false },
{ name: 'SSD', checked: false },
{ name: 'RasberyPi', checked: false },
{ name: 'Desktop', checked: false },
{ name: 'TV', checked: false },
{ name: 'Monitor', checked: false } ]
{ product: 'Laptop' }
[{name:"Laptop", checked: true}]
最佳答案
在您检查条件的部分,if product in getDefaultProducts ()
将不起作用,因为 getDefaultProducts 是一个对象数组。您正在将字符串与每个对象进行比较,例如:
"Laptop" === { name: "Laptop", checked: false }
这将始终返回 false。相反,您可以使用查找功能:
function useProduct(product){
getDefaultProducts().find(el => {
if (el.name === product) {
el.checked = true
forSale.push(el)
}
});
return product;
}
关于javascript - 如果在映射数组中,则将对象推送到选中 : true, 的新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59435562/