javascript - 在数组中搜索对象
问题描述
该函数必须将汽车的品牌作为第二个参数。如果mark
未找到,则应显示“售车”消息。如果找到品牌,它应该显示您正在寻找的汽车的对象。错误是什么?
const arr = [{
"mark": "BMW",
"price": "55 000",
"color": "red",
"constructor": "Billy%Zekun",
"country": "Germany",
"certificate": "yes"
},
{
"mark": "Mercedes-benz",
"price": "63 000",
"color": "blue",
"constructor": "Jon%Adams",
"country": "Germany",
"certificate": "yes"
},
{
"mark": "TOYOTA",
"price": "48 000",
"color": "blue",
"constructor": "Jon Hubert",
"door": "3",
"max_people": "7",
"country": "Japan",
"certificate": "yes"
},
{
"mark": "Volkswagen",
"price": "36 000",
"color": "red",
"constructor": "Pier Sun",
"country": "Germany",
"certificate": "no"
},
];
function car(arr, mark) {
let carss = arr.filter(function(item) {
return item.mark === mark;
})
return carss !== mark ? carss[0] : "car sold";
};
console.log(car(arr, "Mercedes-benz", ));
解决方案
有两个问题:
您不能使用
!==
(or!=
, or==
, or===
) 比较数组。即使它们具有相同的内容,两个不同的数组也永远不会彼此相等。filter
不是在数组中搜索匹配项的正确选择。在这种情况下,由于您想返回找到的第一辆车,因此您将使用find
(使用与您现在相同的谓词函数)。
使用find
:
function car(arr,mark ){
let car = arr.find(function(item){
return item.mark === mark ;
})
return car || "car sold";
}
或者你可以使用箭头函数
function car(arr,mark ){
let car = arr.find(item => item.mark === mark);
return car || "car sold";
}
现场示例:
const arr = [
{
"mark":"BMW",
"price":"55 000",
"color":"red",
"constructor":"Billy%Zekun",
"country":"Germany",
"certificate":"yes"
},
{
"mark":"Mercedes-benz",
"price":"63 000",
"color":"blue",
"constructor":"Jon%Adams",
"country":"Germany",
"certificate":"yes"
},
{
"mark":"TOYOTA",
"price":"48 000",
"color":"blue",
"constructor":"Jon Hubert",
"door":"3" ,
"max_people":"7",
"country":"Japan",
"certificate":"yes"
},
{
"mark":"Volkswagen",
"price":"36 000",
"color":"red",
"constructor":"Pier Sun",
"country":"Germany",
"certificate":"no"
},
];
function car(arr,mark ){
let car = arr.find(item => item.mark === mark);
return car || "car sold";
}
console.log(car(arr , "Mercedes-benz"));
(您的调用中还有一个额外,
的console.log
内容,我在示例中删除了它。它之所以有效,是因为现代 JavaScript 中的参数列表中允许使用尾随逗号,但几年前它会失败。)
推荐阅读
- shell - shell脚本因回显变量而跌跌撞撞
- php - 在 laravel 中直接显示图像
- c# - Core 2.1 拒绝使用 Access-Control-Expose-Headers 响应:*
- xamarin - 如何在 iOS 上设置状态栏背景颜色?
- java - 限制 Hibernate 的自定义 FileMaker 方言中的结果
- javascript - 获取文本的 JavaScript 变量并将它们用作隐藏输入
- c# - 带有 WPF 引导程序的 WIX 安装程序未设置 %ERRORLEVEL% 变量
- ruby - 如何使用方法改变局部变量的值?
- c# - ValueType GetHashCode/Equals 实现中嵌套小数行为的说明
- vba - VBA:命令按钮根据列表框内容更新 Excel 工作表