【问题标题】:Remove all elements from object except specified key?从对象中删除除指定键之外的所有元素?
【发布时间】:2016-08-03 10:39:31
【问题描述】:

我有一个对象:

"languages": {
    "en":["au", "uk"],
    "de":["de"],
    ....
 }

我怎样才能删除除指定键之外的所有内容,所以如果我指定 'en' 我只想要一个包含 "en":["au", "uk"] 的对象

【问题讨论】:

  • 创建一个只包含提取的键和值的新文件?使用一百万个会根据任意标准拒绝对象键的 JS 库中的任何一个?
  • 所以你想删除'en'的所有键除了

标签: javascript javascript-objects


【解决方案1】:

正在寻找答案,之前的对我有帮助,只是添加了我需要的代码的功能版本

function returnNewObjectOnlyValidKeys(obj, validKeys) {
  const newObject = {};
  Object.keys(obj).forEach(key => {
    if (validKeys.includes(key)) newObject[key] = obj[key];
  });
  return newObject;
}

【讨论】:

    【解决方案2】:

    “如何删除除指定键之外的所有键”的原始问题的一般解决方案(从 Rajaprabhu 的回答中提炼):

    validKeys = [ 'a', 'b', 'c' ];
    userInput = { "a":1, "b":2, "c":3, "d":4, "e":5 }
    
    Object.keys(userInput).forEach((key) => validKeys.includes(key) || delete userInput[key]);
    

    【讨论】:

      【解决方案3】:

      使用delete 的简单循环就可以了。

      var key = 'en';
      for (var k in obj.languages) {
          if (obj.languages.hasOwnProperty(k) && k != key) {
              delete obj.languages[k];
          }
      }
      

      【讨论】:

      • 'key' var 应该用在 if 语句中吧?
      【解决方案4】:

      尝试delete不需要的属性,

      var obj = { "languages": { "en":["au", "uk"],"de":["de"] }};
      
      Object.keys(obj.languages).forEach(function(itm){
        if(itm != "en") delete object.languages[itm];
      });
      

      【讨论】:

        【解决方案5】:

        简单地说,你可以创建一个具有指定字段的新对象;

        var key = 'en';
        
        var o = {
            "languages": {
                "en": ["au", "uk"],
                "de": ["de"]
            }
        }
        
        var res = {}
        
        res[key] = o.languages[key];
        

        【讨论】:

        • 这个人可能投了反对票,因为这是一种解决方法,而不是实际问题的答案。登陆这里的人可能会根据标题寻找答案,而不是针对这种独特案例的解决方法。
        • 这不是一个理想的解决方案。为什么?因为在原始数组中不存在key 的情况下,我们将使用键和未定义的值创建一个新的数组条目。这可能是不可取的。
        猜你喜欢
        • 1970-01-01
        • 2023-03-09
        • 2021-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-06
        • 1970-01-01
        相关资源
        最近更新 更多