如果我有一个物体
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并手动将每个键属性复制到键数组?
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
这可以通过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中的,所以它使用来实现这一点。 我怎么能在斯威夫特做到这一点呢?