0

我有一个复选框,我填充如下

<div repeat.for="list of Items" change.delegate="getClicked()"  >

<md-checkbox  checked.bind="List" model.bind="list" >${list.name}</md-checkbox>
</div>

我的 ts 页面中有另一个列表,它返回所有项目并存储如下

getClicked()
{
let result= this.ItemList  // this object contains a list of items
}

我想要实现的是,如果我单击复选框,我想获取 id 并在 ItemList 对象上对其进行过滤以仅返回该项目。

这就是我所拥有的

getClicked() {
        
        let Id = this.List.map(x=> x.id);
        let result = this.ItemList.filter(x => x.ItemId === Id)
}

Items=[{ id: 11125e, name:"coke" },
        { id: 11125e,name:"juice" },
        { id: 33e4,name:"chips" }]

我遇到的问题是我的结果总是以 [] 为空返回。

例如,当我获得 id 时,这就是发生的事情

let Id = this.List.map(x=> x.id);// id returned["11125e"]
            let result = this.ItemList.filter(x => x.ItemId ===["11125e"] ) // id gets passed with [] around it

但如果我必须手动测试并且我在没有 [] 的情况下执行此操作,我会得到结果

let result = this.ItemList.filter(x => x.ItemId ==="11125e" )

所以我的问题是我怎么得到this.List.map(x=> x.id);// id returned["11125e"] to be "11125e"

4

1 回答 1

1

map()方法创建一个新数组,其中填充了在调用数组中的每个元素上调用提供的函数的结果

你正在寻找的是find

find()方法返回提供的数组中满足提供的测试功能的第一个元素的值。


let result = this.ItemList.find(x => x.ItemId ==="11125e")
于 2020-10-13T12:00:01.963 回答