有人可以帮我修复这个功能吗?如果我将两个变量更改为整数(即:“987”),它将起作用,但如果我将它们更改为“test”之类的字符值,它将不会搜索数组。
我是 JavaScript 新手,如果这是一个简单的修复,请原谅。预先感谢您。
var myArray = [{
'Vendor': '123',
'Item': '987',
'ID': '1'
}, {
'Vendor': '123',
'Item': '654',
'ID': '2'
}];
function findById(source, Vendor, Item) {
return source.filter(function(obj) {
return +obj.Vendor === +Vendor, +obj.Item === +Item;
})[0];
}
var vendin = '123';
var prodin = '654';
var result = findById(myArray, vendin, prodin);
console.log(result.ID);
相关变量是 vendin
和 prodin
。
最佳答案
你的return语句是错误的,它只会返回最后一条语句的结果:+obj.Item === +Item
,你需要使用逻辑运算符&&
,||
语句之间不是逗号
return +obj.Vendor === +Vendor, +obj.Item === +Item;
应该是
return (+obj.Vendor === +Vendor) && (+obj.Item === +Item);
如果测试字符串,还要删除 +
关于JavaScript 函数变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24896284/