【发布时间】:2021-12-15 05:07:21
【问题描述】:
如何在对象数组中找到要插入的索引。
我有一个对象数组。
var cordinate = [
[225, 242],
[405, 242],
[585, 242],
[765, 242],
[225, 325],
[405, 325],
[585, 325],
[765, 325],
[225, 408],
[405, 408],
[585, 408],
[765, 408]
]
这里我想插入最近的元素
我要插入的数组
var extraEle = [404, 260]
如何确定坐标中extraEle的准确索引。
这是我正在尝试的
我正在比较 y 坐标以获取最近的范围,然后将 x 坐标与仅 y 范围进行比较以获取索引。
var yValue = [];
var diffVal = cordinate[0][1];
for(var i=0; i<cordinate.length;i++){
if (Math.abs(extraEle[1] - diffVal) > Math.abs(extraEle[1]- cordinate[i][1])){
diffVal = componentsPos[i][1];
}
}
var index;
yvalue = [];
for(var i=0; i<cordinate.length;i++){
if (cordinate[i][1] === diffVal){
yvalue.push(componentsPos[i]);
}
}
var diffValX = yvalue[0][0];
for(var i=0; i<yvalue.length;i++){
if (Math.abs(extraEle[0] - diffValX) > Math.abs(extraEle[0]- yvalue[i][0])){
diffValX = yvalue[i][0];
}
}
var indexValue = [diffValX,diffVal]
cordinate.indexOf(indexValue, 0)
我们可以有一些内置的或比这更好的方法吗? 注意:此代码是工作代码。
在我的例子中输出将是 2 因为 260(Y) 将在前 4 个元素和 404 (X) 的范围内将出现在第三个元素之前。
添加后我的坐标应该是这样的。
cordinate = [
[225, 242],
[405, 242],
[404, 260],
[585, 242],
[765, 242],
[225, 325],
[405, 325],
[585, 325],
[765, 325],
[225, 408],
[405, 408],
[585, 408],
[765, 408]
]
但确切地说,我只需要可以插入的索引。
【问题讨论】:
-
您希望您的预期输出是什么样的?另外我假设
cordinate是一个数组而不是一个对象? -
在您的第一个代码块中,
cordinate不是对象数组,也不是有效的 javascript。你能用有效的 JS 更新它吗? -
是的,坐标是数组的集合。在 Out 中,我想要一个可以在坐标中添加变量的近似索引。 @杰克
-
@David 目前还不清楚插入新元素的逻辑是什么。能否请您说得更清楚一些并添加您的预期输出(最终值为
cordinate)? -
@JackBashford 我已经更新了这个问题。我正在比较 y 坐标以获得最近的范围,然后比较 x 坐标。
标签: javascript arrays data-structures