【问题标题】:Javascript Function VariableJavascript 函数变量
【发布时间】:2014-07-22 19:36:26
【问题描述】:

有人可以帮我修复这个功能吗?如果我将两个变量更改为整数(即​​:'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);

有问题的变量是vendinprodin

【问题讨论】:

  • 我对你 return 声明中的逗号感到困惑。你不是要使用return +obj.Vendor === +Vendor && +obj.Item === +Item; 吗?

标签: javascript arrays variables filter find


【解决方案1】:

你的 return 语句是错误的,它只会返回最后一条语句的结果:+obj.Item === +Item,你需要在语句之间使用逻辑运算符 &&,|| 而不是逗号

return +obj.Vendor === +Vendor, +obj.Item === +Item;

应该是

return (+obj.Vendor === +Vendor) && (+obj.Item === +Item);

如果测试字符串,还要删除+

【讨论】:

    【解决方案2】:

    试试这个:

    var myArray = [{'Vendor':'123','Item':'987','ID':'1'}, {'Vendor':'123','Item':'654','ID':'2'}, {'Vendor':"test",'Item':"test2",'ID':'3' }];

    function findById(source, Vendor, Item) {
    
        var x = source.filter(function( obj ) {
            return (obj.Vendor == Vendor && obj.Item == Item);
        })[ 0 ];
        return x;
    }
    
    var vendin = "test";
    var prodin = "test2";
    var result = findById( myArray,vendin,prodin)
    
    console.log(
    result.ID
    );
    

    【讨论】:

      猜你喜欢
      • 2016-11-10
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多