【问题标题】:Finding last dictionary with key in array使用数组中的键查找最后一个字典
【发布时间】:2017-06-30 17:53:31
【问题描述】:

给定一个字典数组,我如何找到包含某个键“test”的最后一个字典。

我发现第一个使用: answerDict = myarray.find(hasOwnProperty('test'));

但我不确定如何从右到左进行查找。

我尝试过使用 lodash: answerDictLast = _.findLast(myarray, function(n){return n.hasOwnProperty('test');});

但这不起作用。 (当我在节点中运行它时,我得到'_.findLast 不是一个函数',即使在需要 lodash 之后也是如此)。

我也研究过使用lastIndexOf,但似乎无法在字典中找到密钥。有什么想法吗?谢谢! 我知道我可以遍历整个数组,但我很想找到一种更简洁的方法来做到这一点,因为我怀疑有一个。

【问题讨论】:

  • 如果数组不是很大,你可以使用myarray.slice().reverse().find(... 之类的东西。或者您可以简单地遍历数组。老实说,有很多方法可以做到这一点 - 包括使用.reduce()

标签: javascript arrays dictionary search lodash


【解决方案1】:

正如您在 sn-p 中看到的 - _.findLast() 是您所需要的:

const myarray =  [{ v: 1 }, { test: 1 }, { v: 1 }, { test: 2 }, { v: 1 }];

const answerDict = _.findLast(myarray, (v) => _.has(v, 'test'));

console.log(answerDict);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

但是,_.findLast() 可从 lodash 版本 2.0.0 获得。 检查你的 lodash 的版本。

【讨论】:

    【解决方案2】:

    您可以向后遍历数组。

    var arr = [{ key2 : "sup"}, { key2 : "pick me!"}, {key1 : "not it"}]
    
    
    function findLastWithKey(array, key){
        for(var i = array.length-1; i>=0 ; i--){
            // put whatever criteria you want here
            if(array[i][key])
              return array[i];
        }
    }
    
    console.log(findLastWithKey(arr, "key2"))

    【讨论】:

      【解决方案3】:

      你是说?

      var array = ["Apple test", "test Banana", "Peach", "Pumpkin test", "Tomatestto", "Mantestgo", "Guava"],
          arrayContainsCharacterDefine = [];
          for(var i=0;i<array.length;i++){
              if(array[i].slice(-4) === 'test'){
                 arrayContainsCharacterDefine.push(array[i]);
               }
          }
         console.log(arrayContainsCharacterDefine);// result ["Apple test", "Pumpkin test"];
      

      JSFIDDLE DEMO

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-14
        • 2023-04-08
        • 2015-05-16
        • 2019-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-27
        相关资源
        最近更新 更多