使用Angular2将Angular模型对象数组中的一个元素替换为另一个对象

时间:2018-12-18 19:27:01

标签: json angular typescript

我有一个有角度的物体阵列。我想用另一个元素替换数组中的整个元素。

    export interface modelCourse{
         var1: number;
         var2: number;
     }

我想做这样的事情:

    updateResults(myCourse: modelCourse) {
        this.allCourses.forEach(element => {
            if (myCourse.Id=== element.Id) {
                element = myCourse;  // this part doesn't work as expected
            }
        });
    }

哪里

    allCourses: modelCourse[] = [];

allCourses拥有我所有的课程。

2 个答案:

答案 0 :(得分:2)

如果只需要查找一个匹配的元素,则不需要遍历所有元素,只需使用findIndex方法即可。这样可以查找所需元素的索引,而无需遍历所有元素。

然后您可以使用该索引来更新原始数组。

updateResults(myCourse: modelCourse) {
    const foundElementIndex = this.allCourses.findIndex(element => myCourse.id === element.id);
    this.allCourses[foundElementIndex] = myCourse;
}

我在这里进行了一次堆叠闪电战:https://stackblitz.com/edit/angular-hxxddn

答案 1 :(得分:0)

请使用void PhysicsEngine::init(float gravX, float gravY) { m_stackAlloc.init(200000000); m_world = (b2World*)m_stackAlloc.allocAligned(sizeof(b2World), alignof(b2World)); m_world = new(m_world)b2World(b2Vec2(gravX, gravY)); } void PhysicsEngine::addGround(glm::vec2 pos, glm::vec2 size) { PhysicsGround* physicsGround = (PhysicsGround*)m_stackAlloc.allocAligned(sizeof(PhysicsGround), alignof(PhysicsSprite)); physicsGround->init(pos, size, m_world); } void PhysicsGround::init(glm::vec2 pos, glm::vec2 size, b2World* world) { b2BodyDef groundBodyDef; groundBodyDef.position.Set(pos.x, pos.y); m_body = world->CreateBody(&groundBodyDef); m_shape.SetAsBox(size.x / 2.0f, size.y / 2.0f); m_fixture = m_body->CreateFixture(&m_shape, 0.0f); // Exception thrown here } 更新Array.map

this.allCourses