从数组键访问对象值

Accessing object values from array keys

本文关键字:对象 访问 数组      更新时间:2023-09-26

这可能是一个愚蠢的问题,但我被卡住了:(

我有一个对象和一个数组,其中一个是像这样的数据

var pwData = {
  "2_6": {
    "name":"ggregreg",
    "location":"Manchester",
  },
  "2_70": {
    "name":"rwerwer",
    "location":"Solihull"
  },
  "2_59": {
    "name":"Amy",
    "location":"yjhtgeg"
  }

另一个是对订单的引用,比如这个

var pwOrder = ["2_70", "2_59", "2_6"];

然后,我尝试使用pwData中的数据,按照pwOrder数组的顺序对一些数据进行控制台日志记录。像这样。

 $.each(pwOrder, function(k)
{
    console.log(pwData[k].name);
}

在我看来,它应该按照pwOrder定义的顺序记录pwData中的人名,但它不起作用:(非常感谢任何帮助,把我的头发拔出来!!

jquery each回调中的k将是index,而不是本身。

var pwData = {
  "2_6": {
    "name": "ggregreg",
    "location": "Manchester",
  },
  "2_70": {
    "name": "rwerwer",
    "location": "Solihull"
  },
  "2_59": {
    "name": "Amy",
    "location": "yjhtgeg"
  }
};
var pwOrder = ["2_70", "2_59", "2_6"];
$.each(pwOrder, function(index, key) {
  console.log(pwData[key].name);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

不需要jquery,但是可以使用本机javascipt

var pwData = {
  "2_6": {
    "name": "ggregreg",
    "location": "Manchester",
  },
  "2_70": {
    "name": "rwerwer",
    "location": "Solihull"
  },
  "2_59": {
    "name": "Amy",
    "location": "yjhtgeg"
  }
};
var pwOrder = ["2_70", "2_59", "2_6"];
pwOrder.forEach(function(key) {
  console.log(pwData[key].name);
});

James是正确的。

$.each(pwOrder, function(k)
{
    console.log(pwData[pwOrder[k]]['name']);
});

工作。