JavaScript,找到对象数组中的最小值
JavaScript, find lowest value in array of objects
我正在使用 deckgl 构建自定义视觉效果,这是代码和整个视觉效果
datastudio.google.com/reporting/fe15b7b1-aa4a-4f1b-9b29-52db4734c526
目前,我只是使用第一个元素作为初始视图的参考
var data1 = DEFAULT;
var firstvalue = data1[0].coordinateid.toString();
var coordinates = firstvalue.split(",");
var longitudeView =parseFloat(coordinates[0]);
var latitudeView =parseFloat(coordinates[1]);
这里是我正在使用的对象数组的示例
"DEFAULT": [
{
"coordinateid": [
"140,-34.777302"
],
"colorid": [
"169,255,169"
],
"sizeid": [
31
]
},
{
"coordinateid": [
"143.4999358,-34.77"
],
"sizeid": [
150
]
},
{
"coordinateid": [
"143.4999381,-20"
],
"colorid": [
"169,169,169"
],
"sizeid": [
1900
]
}
]
如何获取字段 "coordinateid" 的最低值,在这个例子中是 [140,-20]
我是 javascript 的新手,我确实了解如何访问单个对象值,但不确定如何遍历整个数组,是否有直接访问字段 "Coordinateid" 或的所有值的函数我应该使用循环吗?
您有 2 个选择:
更快的一个 - 一个简单的循环,您始终保留到目前为止找到的最低的一个:
let lowest = arr[0];
for(let i=1; i<0; i++)
{
if(arr[i] < lowest) // I used < for the example, enter your comparison logic here
lowest = arr[i];
}
效率较低的方法,但可能会在以后的代码中对您有所帮助:使用 'Array.sort' 方法对数组进行排序:
array.sort( (el1, el2) => {
if(el1 > el2) // again- I used > sign, put the actual comparison logic here, i.g: el1.coordinateid[0] > el2.coordinateid[0] and so on
return -1;
else return 1;
});
请注意,排序数组的工作方式如下:您给它一个回调函数,该函数获取数组的 2 个元素。如果你 return -1 这意味着传递的第一个元素应该在 之前 第二个元素当它们被放回排序数组时,0 表示它们相等,1意味着传递给函数的第二个元素应该首先出现。
有关更多说明,请参阅上面的 sort
方法 link。
我正在使用 deckgl 构建自定义视觉效果,这是代码和整个视觉效果
datastudio.google.com/reporting/fe15b7b1-aa4a-4f1b-9b29-52db4734c526
目前,我只是使用第一个元素作为初始视图的参考
var data1 = DEFAULT;
var firstvalue = data1[0].coordinateid.toString();
var coordinates = firstvalue.split(",");
var longitudeView =parseFloat(coordinates[0]);
var latitudeView =parseFloat(coordinates[1]);
这里是我正在使用的对象数组的示例
"DEFAULT": [
{
"coordinateid": [
"140,-34.777302"
],
"colorid": [
"169,255,169"
],
"sizeid": [
31
]
},
{
"coordinateid": [
"143.4999358,-34.77"
],
"sizeid": [
150
]
},
{
"coordinateid": [
"143.4999381,-20"
],
"colorid": [
"169,169,169"
],
"sizeid": [
1900
]
}
]
如何获取字段 "coordinateid" 的最低值,在这个例子中是 [140,-20] 我是 javascript 的新手,我确实了解如何访问单个对象值,但不确定如何遍历整个数组,是否有直接访问字段 "Coordinateid" 或的所有值的函数我应该使用循环吗?
您有 2 个选择:
更快的一个 - 一个简单的循环,您始终保留到目前为止找到的最低的一个:
let lowest = arr[0]; for(let i=1; i<0; i++) { if(arr[i] < lowest) // I used < for the example, enter your comparison logic here lowest = arr[i]; }
效率较低的方法,但可能会在以后的代码中对您有所帮助:使用 'Array.sort' 方法对数组进行排序:
array.sort( (el1, el2) => { if(el1 > el2) // again- I used > sign, put the actual comparison logic here, i.g: el1.coordinateid[0] > el2.coordinateid[0] and so on return -1; else return 1; });
请注意,排序数组的工作方式如下:您给它一个回调函数,该函数获取数组的 2 个元素。如果你 return -1 这意味着传递的第一个元素应该在 之前 第二个元素当它们被放回排序数组时,0 表示它们相等,1意味着传递给函数的第二个元素应该首先出现。
有关更多说明,请参阅上面的 sort
方法 link。