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

如何在ES5中根据num属性匹配结果填充name属性数组?

ES5实现:匹配对象数组属性并提取对应值

需求:当变量num的值与对象数组arrObj中元素的num属性值匹配时,将对应元素的name属性值填充至空数组arr中(预期结果为['Luke', 'Martin'])。

原始变量定义

var num = 1;
var arr = [];
var arrObj = [
  { name: 'Mark', num: 3 },
  { name: 'Paul', num: 4 },
  { name: 'Luke', num: 1 },
  { name: 'Martin', num: 1 }
];

实现方案

方案1:普通for循环(兼容所有ES5及更早环境)

通过遍历数组索引,逐个判断元素的num属性是否匹配,匹配则将name推入目标数组:

for (var i = 0; i < arrObj.length; i++) {
  var currentItem = arrObj[i];
  if (currentItem.num === num) {
    arr.push(currentItem.name);
  }
}
console.log(arr); // 输出: ['Luke', 'Martin']

方案2:forEach遍历(ES5新增数组方法)

利用ES5新增的Array.prototype.forEach方法遍历数组,逻辑与for循环一致,写法更简洁:

arrObj.forEach(function(currentItem) {
  if (currentItem.num === num) {
    arr.push(currentItem.name);
  }
});
console.log(arr); // 输出: ['Luke', 'Martin']

方案3:filter + map组合(ES5新增数组方法)

先通过filter筛选出符合条件的元素,再用map提取对应的name属性,直接得到目标数组:

var arr = arrObj.filter(function(currentItem) {
  return currentItem.num === num;
}).map(function(currentItem) {
  return currentItem.name;
});
console.log(arr); // 输出: ['Luke', 'Martin']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 02:54:24