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

how to call an array of keys from an array of objects?

本文关键字:数组 调用 对象      更新时间:2023-09-26

如果我有以下数组

someArray = [{id: 1, coordinates: {latitude: 1212, longitude: 13324}},{id: 2, coordinates: {latitude: 1314, longitude: 15151}}]

是否有调用someArray的方法,这样我就可以得到坐标键的数组,而不必创建一个新的数组?someArray。坐标没有定义。预期的输出:

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

您可以使用Array#map (spec, MDN):

someArray = someArray.map(function(entry) {
    return entry.coordinates;
});

Array#map从你传递给它的迭代函数返回的项中产生一个新的数组。

<<p> 生活例子/strong>:

var someArray = [{id: 1, coordinates: {latitude: 1212, longitude: 13324 }}, {id: 2, coordinates: {latitude: 1314,longitude: 15151}}];
snippet.log("Before:");
snippet.log(JSON.stringify(someArray));
someArray = someArray.map(function(entry) {
    return entry.coordinates;
});
snippet.log("After:");
snippet.log(JSON.stringify(someArray));
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

您可以尝试使用map函数:

someArray.map(function(current, index, array){ array[index] = current.coordinates});

这将修改您的原始代码。您可以将其作为另一个数组,例如:

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);

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

var someArray = [{id: 1, coordinates: {latitude: 1212, longitude: 13324}},{id: 2, coordinates: {latitude: 1314, longitude: 15151}}];
var i = -1;
while(someArray[++i]){
   someArray[i] = someArray[i].coordinates;
}
document.write("<pre>"+JSON.stringify(someArray,0,3)+"</pre>");