我有一个看起来像这样的对象:
switch
我有一个包含所有小部件的数组,所有小部件。当defaultWidget为true时,我想从此数组中提取ID。
因此,当另一个属性(defaultWidget)为true时,我想从此对象(id)中提取一个属性。到目前为止,我有:
export default class Widget {
public title: string;
public url: string;
public icon: string;
public id: string;
public defaultWidget: boolean;
}
但是,它只为它拥有的每个真实对象返回true。但是我希望它返回defaultWidget为true的ID。
答案 0 :(得分:3)
您可以使用filter来获取defaultWidget === true
的小部件,然后使用map来获取ID。
filter
和map
都将创建新的数组。
或者您可以尝试使用reduce来组成所有内容。
对于reduce
,您将创建一次新数组。
const newArray = allWidgets.filter(widget => widget.defaultWidget).map(widget => widget.id)
// or
const newArray = allWidgets.reduce((acc, elem) => {
if (elem.defaultWidget) {
acc.push(elem.id);
}
return acc;
}, []);
答案 1 :(得分:2)
const newArray = allWidgets.filter(obj => obj.defaultWidget).map(obj => obj.id);
上面的数组将为您提供ID的列表,其中 defaultWidget 为true。
此处过滤器将根据条件过滤数组,然后映射创建一个仅包含ID的新数组
答案 2 :(得分:1)
在JavaScript中,您可以尝试以下代码:returns list of ids if married = true
// Try edit msg
var emps = [
{id: 1, name: "Employee1", married: true},
{id: 2, name: "Employee1", married: false},
{id: 3, name: "Employee1", married: true}
]
// getting list of ids of employees if married is true
var idList = emps.map(obj => {
if (obj['married'] == true) {
return obj.id
}
})
// removing null values from list
idList = idList.filter(ele => ele!=null);
console.log(idList);
// output: [1, 3]