【问题标题】:Function argument as key to array函数参数作为数组的键
【发布时间】:2017-12-05 20:46:57
【问题描述】:

我需要通过它的键在关联数组中找到一个值。有可能做这样的事情吗?

$.fn.array_search = function(what, where, array_key){

    for (var key in where) {
        if (where[key].array_key == what) return true;
    }
    return false;
}

【问题讨论】:

  • 当您说关联数组时,您的意思是 var person = {firstName:"John", lastName:"Doe", age:46};
  • @MuhammadOmerAslam,喜欢var persons = {{firstName:"John", lastName:"Doe", age:46}, {firstName:"Tom", lastName:"Dav", age:25}, ...} 并按名字查找,例如
  • 刚刚为你添加了答案

标签: jquery arrays associative-array


【解决方案1】:

在处理对象并尝试查找键时使用.hasOwnProperty() 怎么样,hasOwnProperty() 方法返回一个boolean 指示object 是否具有指定的property 作为自己的(not inherited) 属性。此方法可用于确定object 是否具有指定属性作为该对象的直接属性,与in 运算符不同,此方法不检查对象的原型链。

然后你可以使用Array.prototype,为你的数组定义你的prototypeArray.prototype 属性代表 Array 构造函数的 prototype,并允许您向所有 Array 对象添加新属性和方法。

我将你的函数更新如下,希望对你有帮助。

var arrayC = [{
    name: "omer",
    age: 16,
    city: "pakistan"
  },
  {
    name: "ali",
    age: 26,
    city: "pakistan"
  }
];


// If JavaScript doesn't provide a assoc_search() method natively,
if (!Array.prototype.assoc_search) {

  // returns after finding the first match for the given key => value pair and return the value
  Array.prototype.assoc_search = function(what, array_key) {

    let where = this;

    for (var key in where) {
      if (where[key].hasOwnProperty(array_key) && where[key][array_key] == what) {
        return where[key][array_key];
      }
    }
    return false;

  };
}

var result = arrayC.assoc_search("omer", "name");
(result) ? console.log('found ' + result): console.log('not found ');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2017-04-28
    • 1970-01-01
    • 2012-11-24
    • 2011-02-21
    相关资源
    最近更新 更多