javascript 获取数组中对象的元素[已关闭]

hlswsv35  于 2022-12-28  发布在  Java
关注(0)|答案(3)|浏览(173)

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
14小时前关门了。
Improve this question
这可能是个愚蠢的问题,但我已经花了好几个小时来解决它。我有一个这样的数据。

我试图得到每个对象的xy坐标进行运算。代码如下:

const calculateDistances = () => {
        data[0].distances.map((item, index) => {
            const distance = Math.sqrt(Math.pow(item[index + 1].x - item[0].x) + Math.pow(item[index + 1].y - item[0].y))
            array.push(distance)
        })
    }

这里的问题:

pu3pd22g

pu3pd22g1#

正如已经指出的,item是一个对象,而不是对象数组; .map()正在对象数组上操作,可以通过下面的第三个参数arr访问该数组。
还要记住Math.pow()需要第二个参数2

const calculateDistances = () => {
    data[0].distances.map((item, index, arr) => {
        const distance = Math.sqrt(Math.pow(item.x - arr[0].x, 2) + Math.pow(item.y - arr[0].y, 2));
        array.push(distance);
    })
}
7ajki6be

7ajki6be2#

你试图访问item中不存在的索引(它是一个对象,没有索引或键0)。每个item基本上都是一个具有{id, company, x, y}的对象。
所以,假设你想知道原点和每个点之间的距离,它应该是这样的:

const points = data[0].distances; // just to simplify
const origin = {x: 0, y: 0}; // or it could be an element form points like points[0]
const calculateDistances = () => {
        points.map((item) => {
            const distance = Math.sqrt(Math.pow(item.x - origin.x) + Math.pow(item.y - origin.y))
            array.push(distance)
        })
    }

如果你想知道当前点和下一点之间的距离

const points = data[0].distances;
const calculateDistances = () => {
    points.map((item, index) => {
        const distance = Math.sqrt(Math.pow(item.x - points[index+1].x) + Math.pow(item.y - points[index+1].y))
        array.push(distance)
    })
}

请下次不要使用代码的图像,而是键入代码。

kqqjbcuj

kqqjbcuj3#

item已经是一个对象,因此您不需要使用index,但是为了与xy的初始值进行比较,您可能需要使用距离的第一个元素,因此需要使用data[0]['distances'][0]

√[(x2 – x1)^2 + (y2 – y1)^2]

据我所知,这对你应该有用。

const calculateDistances = () => {
    data[0].distances.map((item) => {
        const distance = Math.sqrt(Math.pow(item.x - data[0]['distances'][0].x,2) + Math.pow(item.y - data[0]['distances'][0].y,2))
        array.push(distance)
    })
}

相关问题