我在json中有一长串时区,如下所示。
[
{"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()方法,但无法解决如何在这种情况下使用它。是否有一个简单的方法来处理这件事,还是我应该把整个清单都提前看完?
发布于 2018-03-30 13:07:06
使用Javascript,我希望在json对象中找到America/洛杉矶的位置,这样我就可以使用它的“名称”预先填充表单字段。
您可以使用findIndex
var index = arr.findIndex( s => s.value == "America/Los_Angeles" )现在使用此索引预先填充字段。
或者简单地使用find返回对象
var element = arr.find( s => s.value == "America/Los_Angeles" )并在element本身中设置名称字段
element.name = "somevalue";发布于 2018-03-30 13:07:28
您可以使用filter
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 );
医生:过滤器
发布于 2018-03-30 13:09:42
见Array.prototype.findIndex(),例如:
[{x:1},{x:2},{x:3}].findIndex(o => o.x == 2) // => 1如果针对没有该方法的旧JavaScript解释器,只需遍历数组并返回与此函数中演示的第一个项匹配的索引:
function findIndexByProperty(array, name, value) {
for (var i = 0; i < array.length; i++) {
if (array[i][name] === value) { return i; }
}
return -1;
}https://stackoverflow.com/questions/49574994
复制相似问题