首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过值查找javascript中的对象索引

通过值查找javascript中的对象索引
EN

Stack Overflow用户
提问于 2018-03-30 13:04:08
回答 4查看 13.1K关注 0票数 5

我在json中有一长串时区,如下所示。

代码语言:javascript
复制
[
 {"value": "Pacific/Niue", "name": "(GMT-11:00) Niue"},
 {"value": "Pacific/Pago_Pago", "name": "(GMT-11:00) Pago Pago"},
 {"value": "Pacific/Honolulu", "name": "(GMT-10:00) Hawaii Time"},
 {"value": "Pacific/Rarotonga", "name": "(GMT-10:00) Rarotonga"},
 {"value": "Pacific/Tahiti", "name": "(GMT-10:00) Tahiti"},
 {"value": "Pacific/Marquesas", "name": "(GMT-09:30) Marquesas"},
 {"value": "America/Anchorage", "name": "(GMT-09:00) Alaska Time"},
 {"value": "Pacific/Gambier", "name": "(GMT-09:00) Gambier"},
 {"value": "America/Los_Angeles", "name": "(GMT-08:00) Pacific Time"},
 {"value": "America/Tijuana", "name": "(GMT-08:00) Pacific Time -  Tijuana"},
 {"value": "America/Vancouver", "name": "(GMT-08:00) Pacific Time - Vancouver"},
]

我已经设置了用户时区检测,它以"America/Los_Angeles"的形式返回时区字符串

使用Javascript,我希望找到America/Los_Angeles在json对象中的位置,这样我就可以使用它的“名称”预先填充表单字段。

我熟悉indexOf()方法,但无法解决如何在这种情况下使用它。是否有一个简单的方法来处理这件事,还是我应该把整个清单都提前看完?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-03-30 13:07:06

使用Javascript,我希望在json对象中找到America/洛杉矶的位置,这样我就可以使用它的“名称”预先填充表单字段。

您可以使用findIndex

代码语言:javascript
复制
var index = arr.findIndex( s => s.value == "America/Los_Angeles" )

现在使用此索引预先填充字段。

或者简单地使用find返回对象

代码语言:javascript
复制
var element = arr.find( s => s.value == "America/Los_Angeles" )

并在element本身中设置名称字段

代码语言:javascript
复制
element.name = "somevalue";
票数 12
EN

Stack Overflow用户

发布于 2018-03-30 13:07:28

您可以使用filter

代码语言:javascript
复制
var arr = [
    {"value": "Pacific/Niue", "name": "(GMT-11:00) Niue"},
    {"value": "Pacific/Pago_Pago", "name": "(GMT-11:00) Pago Pago"},
    {"value": "Pacific/Honolulu", "name": "(GMT-10:00) Hawaii Time"},
    {"value": "Pacific/Rarotonga", "name": "(GMT-10:00) Rarotonga"},
    {"value": "Pacific/Tahiti", "name": "(GMT-10:00) Tahiti"},
    {"value": "Pacific/Marquesas", "name": "(GMT-09:30) Marquesas"},
    {"value": "America/Anchorage", "name": "(GMT-09:00) Alaska Time"},
    {"value": "Pacific/Gambier", "name": "(GMT-09:00) Gambier"},
    {"value": "America/Los_Angeles", "name": "(GMT-08:00) Pacific Time"},
    {"value": "America/Tijuana", "name": "(GMT-08:00) Pacific Time -  Tijuana"},
    {"value": "America/Vancouver", "name": "(GMT-08:00) Pacific Time - Vancouver"},
]

var search = "America/Los_Angeles";
	
var result = arr.filter(o=>o.value === search);
	
console.log( result );

医生:过滤器

票数 2
EN

Stack Overflow用户

发布于 2018-03-30 13:09:42

Array.prototype.findIndex(),例如:

代码语言:javascript
复制
[{x:1},{x:2},{x:3}].findIndex(o => o.x == 2) // => 1

如果针对没有该方法的旧JavaScript解释器,只需遍历数组并返回与此函数中演示的第一个项匹配的索引:

代码语言:javascript
复制
function findIndexByProperty(array, name, value) {
  for (var i = 0; i < array.length; i++) {
    if (array[i][name] === value) { return i; }
  }
  return -1;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49574994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档