javascript将参数传递给object.keys

时间:2014-02-06 07:33:54

标签: javascript jquery arrays object

我有一个包含我正在寻找的东西的对象:

排除

1:对象[ID:“38433”,位置:“中央”]   2:对象[ID:“43434”,位置:“西”]

我有一个名为学校的对象,其中包含所有内容: 我正在使用Object.keys()方法遍历对象,但我需要传入要搜索的位置来搜索中心或西方等。如果我尝试做类似(Schools.District.location)的事情,我会收到错误。如何将正确的参数传递给我的object.keys函数?

第2部分:从该数组中删除元素的正确方法是什么。所以我需要删除位置[15],如果说ID匹配。

代码:

$.each(Exclusions , function (index, value) {

var location = value.Location;  //gives me Central, West, East
var ID = value.ID;

Object.keys(Schools.District.{{pass in location}}).forEach(function (key) {

 //each location is an array of schools so i need to scan each for the matching ID


  for (var i=0; i < {{get length of location array}}.length; i++) {

      if(location[i][ID] == ID) 
       {
          location.slice();  //not sure about this
       }

    }


});

2 个答案:

答案 0 :(得分:1)

你想肯定使用objects.key吗?为什么不使用for in

var result = [];
for (i in YOUR_OBJECT)
{
    if(YOUR_OBJECT[i].location == "what you want") result.push(YOUR_OBJECT[i]);
}

我猜您无法移除您想要的属性,但您可以将其设置为null,最后,获取不属于null的属性

编辑: 删除YOUR_OBJECT上的属性:(我是关键迭代器)

delete YOUR_OBJECT[i]

答案 1 :(得分:1)

  1. 您应该使用@ am1r_5h上面的答案。对于每次迭代,i(我更喜欢使用key)是一个正确的密钥。 (对于数组,整数索引。)收集以后使用的密钥不是惯用的JavaScript。

  2. 使用splice方法从阵列中删除。它完全删除元素并将其替换为空,以便数组的新长度为original_length - 1。使用delete并传递元素索引将使用undefined替换元素,而数组的长度保持不变。以下是Array.prototype.slicehttps://developer.mozilla.org/enUS/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

  3. 的文档