【问题标题】:How to get only the values in an object which are defined by an array of keys?如何仅获取由键数组定义的对象中的值?
【发布时间】:2018-05-06 08:58:59
【问题描述】:

我有一个包含多个键和值的简单对象:

var obj = {SKA: 267, SKB: 30, SKC: 273, SKD: 900, SKE: 27, SKF: 3}

我还有一个带有一些键的数组:

var keysArray = ["SKB", "SKF"]

我知道我可以使用Object.values(obj) 获取所有值。但是我只需要在keysArray 中定义的键的值。那么,有没有一种简单的方法可以只获取这些键的值并将它们保存在一个新的数组中?

我需要以下结果:

var resultArray = [30, 3]

非常感谢。

【问题讨论】:

  • 键是字符串?
  • 是的,它们是字符串,您下面的解决方案非常完美,谢谢!
  • 很高兴为您提供帮助:)

标签: javascript arrays object filter find


【解决方案1】:
 keysArray.map(key => obj[key])

【讨论】:

  • 如果有一个key不在obj中,它会映射到undefined
【解决方案2】:
var resultArray =[];

keysArray.forEach(function(key){
    if(obj[key]){
        resultArray.push(obj[key]);
    }
});

【讨论】:

    【解决方案3】:

    我会推荐使用循环,比如keysArray 上的forEach,而不是keysArray 上的map。这样做的原因是因为map 不适用于此:

    var obj = {SKA: 267, SKB: 30, SKC: 273, SKD: 900, SKE: 27, SKF: 3};
    var keysArray = ["SKB", "SKF"];
    var resultArray = [];
    
    keysArray.forEach((key)=>{
      resultArray.push(obj[key]);
    });
    console.log(resultArray);

    这就是为什么map 不符合您的要求:

    var obj = {"SKA": 267, "SKB": 30, "SKC": 273, "SKD": 900, "SKE": 27, "SKF": 3};
    var keysArray = ["SKB", "SKF"];
    
    keysArray.map(key => obj[key]);
    console.log(keysArray);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-06
      • 2021-11-27
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2022-01-02
      相关资源
      最近更新 更多