You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从JavaScript对象数组中按指定type属性搜索提取对应value值

解决方案

你可以使用数组内置的find方法匹配符合条件的对象,无需依赖固定索引,适配数组元素顺序变动的场景:

ES6+ 最简实现

const myObjects = [ 
  { type: 'month', value: '9' },
  { type: 'day', value: '11' },
  { type: 'year', value: '2021' },
  { type: 'hour', value: '7' },
  { type: 'minute', value: '35' },
  { type: 'second', value: '07' }  
];

const searchKey = 'month';
// 匹配第一个type等于搜索词的对象
const matchedItem = myObjects.find(item => item.type === searchKey);
// 兼容未匹配到的场景,避免报错
const result = matchedItem ? matchedItem.value : null;

console.log(result); // 输出:9

ES5 兼容实现

如果需要支持旧浏览器环境,可以用普通for循环实现:

var myObjects = [ 
  { type: 'month', value: '9' },
  { type: 'day', value: '11' },
  { type: 'year', value: '2021' },
  { type: 'hour', value: '7' },
  { type: 'minute', value: '35' },
  { type: 'second', value: '07' }  
];

var searchKey = 'month';
var result = null;
for (var i = 0; i < myObjects.length; i++) {
  if (myObjects[i].type === searchKey) {
    result = myObjects[i].value;
    break; // 匹配到后直接跳出循环,减少性能消耗
  }
}

console.log(result); // 输出:9

高频查询优化方案

如果需要频繁查询不同type对应的值,可以提前把数组转为映射对象,后续查询时间复杂度为O(1):

const dateMap = myObjects.reduce(function(prev, curr) {
  prev[curr.type] = curr.value;
  return prev;
}, {});

// 直接通过key取值
console.log(dateMap.month); // 9
console.log(dateMap.year); // 2021

内容的提问来源于stack exchange,提问作者Verminous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:27:02