从数组中获取第一个对象

时间:2016-02-24 14:57:33

标签: javascript arrays

我正在尝试创建一个数组,该数组只包含此数组中的Name元素:

var array = [{Name: "steve"}, {Age: 18}, {Location: "Uk"}];

我是JavaScript的新手,我不确定如何做到这一点。

4 个答案:

答案 0 :(得分:4)

我不认为你理解js对象是如何工作的,他读得很好 http://www.w3schools.com/js/js_objects.asp

如果你真的想从这个数组中使用名称第一个元素,只需使用

array[0]

答案 1 :(得分:1)

javascript具有的一项新功能是数组解构!

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

它消除了使用自定义函数或使用硬编码的0索引(看起来像代码气味)的所有复杂性。

只需将值分解为变量即可。如果数组为空,则值为undefined

const arr = ["one", "two", "three"];
const [first] = arr;

答案 2 :(得分:0)

如果您想要一个仅包含Name键的对象的数组,则可以使用Array.prototype.filter()

这将返回两项数组[{Name: "steve"}, {Name: "conor"}]

var array = [{Name: "steve"}, {Age: 18}, {Location: "Uk"}, 
             {Name: "conor"}, {Age: 18}, {Location: "Uk"}];

var names = array.filter(function(obj) {
  if ('Name' in obj) {
    return true;
  } else {
    return false;
  }
});

如果您只想要一个仅包含Name键对象的Name值的数组,则可以同时使用Array.prototype.filter()Array.prototype.map()

这将返回两项数组["steve", "conor"]

var array = [{Name: "steve"}, {Age: 18}, {Location: "Uk"}, 
             {Name: "conor"}, {Age: 18}, {Location: "Uk"}];

var names = array.filter(function(obj) {
  if ('Name' in obj) {
    return true;
  } else {
    return false;
  }
}).map(function(obj) { return obj['Name']; });

无论哪种方式,您可能想要再看看数组的结构。将您的人员分组可能更有意义。这样每个人都是一个对象,如:

[{name: "steve", age: 18, location: "Uk"}, {name: "conor", age: 18, location: "Uk"}]

答案 3 :(得分:0)

我知道这是一篇较旧的文章,但是我有一个很酷的解决方案,可以从数组中获取键,然后使用它返回第一项,或者最后返回,当前代码为es6,但将其轻松转换为es5。

Array.prototype.first = function () { let k = Object.keys( this ); return this[ k[ 0 ] ]; }
//re for last...
Array.prototype.last = function () { let k = Object.keys( this ); return this[ k[ k.length - 1 ] ]; }

要更改为es5,请使用var而不是let。

这个原型的原因是要确保无论使用何种索引系统,索引都将始终返回第一个元素或最后一个元素...