Javascript 如何从对象数组调用键数组?

Javascript 如何从对象数组调用键数组?,javascript,arrays,node.js,Javascript,Arrays,Node.js,如果我有以下数组 someArray = [{id: 1, coordinates: {latitude: 1212, longitude: 13324}},{id: 2, coordinates: {latitude: 1314, longitude: 15151}}] 是否需要调用someArray,这样我就可以得到坐标键的数组,而不必创建新的数组?someArray.coordinates给了我未定义的信息。 预期产出: [{latitude: 1212, longitude: 1332

如果我有以下数组

someArray = [{id: 1, coordinates: {latitude: 1212, longitude: 13324}},{id: 2, coordinates: {latitude: 1314, longitude: 15151}}]
是否需要调用someArray,这样我就可以得到坐标键的数组,而不必创建新的数组?someArray.coordinates给了我未定义的信息。 预期产出:

[{latitude: 1212, longitude: 13324}, {latitude: 1314, longitude: 15151}] 

编辑:只需使用以下代码段

var someArray=[{id:1,坐标:{纬度:1212,经度:13324},{id:2,坐标:{纬度:1314,经度:15151}]; var i=-1; whilesome数组[++i]{ someArray[i]=someArray[i]。坐标; } 文件。书写 您可以使用Arraymap,以便:

someArray = someArray.map(function(entry) {
    return entry.coordinates;
});
someArray.map(function(current, index, array){ array[index] = current.coordinates});
Arraymap根据从传递给它的迭代函数返回的条目生成一个新数组

实例:

var someArray=[{id:1,坐标:{纬度:1212,经度:13324},{id:2,坐标:{纬度:1314,经度:15151}]; logBefore:; snippet.logJSON.stringifysomeArray; someArray=someArray.mapfunctionentry{ 返回条目。坐标; }; logAfter:; snippet.logJSON.stringifysomeArray;
您可以尝试使用映射功能:

var coordinates = [];
someArray.map(function(current){coordinates.push(current.coordinates)});
不过,这将修改您的原始文件。您可以将其作为另一个数组获取,如:

var coordinates = someArray.map(function(current) { return current.coordinates; });
是的,对不起,我忘了,最简单的是:

function getCoordinates(objectArray) {
   var coordinates = [];
   for (var i in objectArray) {
      var current = objectArray[i];
      coordinates.push(current.coordinates);
   }
}

var onlyCoordinates = getCoordinates(someArray);
或者你可以自己写:


与对象不同的数组是通过数字索引而不是字符串访问的。给定该对象数组,您希望得到什么输出?每个对象的坐标对象内的关键点列表?或者这些物体的坐标数组?如果你在回答我的评论,请把你的问题添加到预期的输出中,希望人们更容易看到。@MattBall不太准确。都是线。数字只是转换成字符串,但它们仍然是字符串。为了让您理解其中的一些混淆,您说您希望获取键,而实际上您希望将每个坐标键的值放入一个新数组中。您不太了解如何使用.map。对于.forEach,您的方法更有意义。使用.map,您从回调返回一个值,最后,.map返回一个包含这些值的新数组。他添加到问题中的预期输出比注释更有意义。“我想这就是他想要的。”斜视:哈哈,谢谢——我的第一个回答就是这么说的!但后来我意识到我没有按他的要求做将恢复。该死,不能只是恢复,必须在窗口内重新键入。@t.J.Crowder,但不是真正重新键入,对吗?你可以复制第一次修订的版本。@Xufox:不,真的要重新键入-我说的是在那之前的版本。我意识到我并没有制作他在评论中所说的内容,但有趣的是,我制作了他真正想要的内容并进行了编辑,它变成了一个忍者编辑。所以现在它不见了。那不是他想要的。即使是这样,我也不知道你为什么要这样做,因为你可以创建一个函数,在原始数组上循环。您还可以使用ECMAScript 6 Array.prototype.findyeah并填充其垫片,他希望不使用新数组。但是,如果id是不同的someArray=[{id:4,坐标:{},{id:9,坐标:{}],如何通过映射找到项呢。我的回答中只有indexOf,我已再次更新。此外,Array.prototype.find仅使用循环变量i=0;i<长度;i++{根据我的经验,null、undefind、[]和pushing array isEmpty发生了许多错误,pushArray解决了这些问题。我知道。find使用循环。这有什么关系?他可以执行var o=someArray.findfunctionobj{return obj.id==5;};console.logo&&o.coordinates;要简单得多。但是,如果你看问题中想要的结果,他确实想要一个数组。他的意思是他不想在代码中编写单独的数组。