当前位置: 首页 > 知识库问答 >
问题:

仅从Javascript中的对象数组返回某些属性[duplicate]

钮安歌
2023-03-14

如果我有一个物体

var object = function(key,text)
{
    this.key = key;
    this.text = text;
}

并创建这些对象的数组

var objArray = [];
objArray[0] = new object('key1','blank');
objArray[1] = new object('key2','exampletext');
objArray[2] = new object('key3','moretext');

有没有一种方法可以让我只检索数组中所有对象的一个属性?例如:

var keyArray = objArray["key"]; 

上面的示例没有将set keyArray返回给任何东西,但我希望它可以设置成如下所示:

keyArray = [
    'key1',
    'key2',
    'key3']

有没有人知道这样做的方法,而不需要遍历objArray并手动将每个键属性复制到键数组?

共有2个答案

董飞
2023-03-14
var object = function(key,text) {
    this.key = key;
    this.text = text;
}

var objArray = [];
objArray[0] = new object('key1','blank');
objArray[1] = new object('key2','exampletext');
objArray[2] = new object('key3','moretext');

var keys = objArray.map(function(o,i) {
  return o.key;
});

console.log(keys); // ["key1", "key2", "key3"]

JS Bin示例

http://jsbin.com/vamey/1/edit

请注意,较旧的浏览器可能不支持map,但您可以通过for循环轻松地做到这一点:

var keys = [];

for (var i = 0; i < objArray.length; i++) {
  keys.push(objArray[i].key);
}

JS Bin示例

http://jsbin.com/redis/1/edit

葛修筠
2023-03-14

这可以通过array.prototype.map()函数轻松完成:

var keyArray = objArray.map(function(item) { return item["key"]; });

如果要经常这样做,可以编写一个函数来抽象映射:

function pluck(array, key) {
  return array.map(function(item) { return item[key]; });
}

事实上,下划线库有一个名为pluck的内置函数,它正是这样做的。

 类似资料:
  • 我有一个目标。我想通过删除除某些特定属性之外的所有属性来修改对象(而不是克隆它)。例如,如果我从这个对象开始: 并且只需要属性p1、p2和p100,如何获得此对象: 我明白如何用蛮力做到这一点,但我想要一个更优雅的解决方案。

  • 问题内容: 如何编写一个在ES6中仅以最紧凑的方式仅包含很少的属性的函数? 我想出了使用解构+简化对象文字的解决方案,但是我不喜欢代码中重复的字段列表。 有没有更苗条的解决方案? 问题答案: 尽管不能避免重复字段列表,但这里有些苗条。它使用“参数解构”来避免需要该参数。 @EthanBrown的解决方案更为通用。这是它的更惯用的版本,它使用和计算的属性(部分): 如果我们要保留属性的属性(例如和和

  • 问题内容: 我有以下结构的JavaScript对象数组: 我想从每个对象中提取一个字段,并获取一个包含值的数组,例如field 将给出array 。 我可以用这种简单的方法做到这一点: 有没有更优雅或更惯用的方法来执行此操作,从而不需要自定义实用程序功能? 关于建议的重复项的注释,它涵盖了如何将单个 对象 转换为数组。 问题答案: 这是实现它的一种较短的方法: 要么 您也可以检查。

  • 我有一个具有以下结构的对象数组: 我希望输出为: 因为这两个都检查了。 我已尝试根据选中值筛选出: 我正在获取已选中属性值设置为。 我们将不胜感激。

  • 我不明白为什么当我尝试循环对象的数组属性时,过滤器返回一个空数组。 不过,当我试着做控制台的时候。日志(this.users)在getFilteredUsers方法中,我可以在它的原型中看到filter方法。。。

  • 有一个名为的类。 并且我有一个对象的数组。我现在需要的是将该数组中所有对象的s提取到一个新数组中。 我也发现了这个类似的问题。但是它是在Objective-C中的,所以它使用来实现这一点。 我怎么能在斯威夫特做到这一点呢?