我有一个已转换为数组的对象 使用此
convertToArray(data: any) {
let arr = [];
Object.keys(data).map(function(key){
arr.push(data[key]);
});
return arr;
}
这是结果
{0: {…}, 1: {…}, 2: {…}, hideTitle: false, template: "football-news", customProperties: {…}}
0: {NewsID: 90, AnotherAttribute: 5, …}
1: {NewsID: 90, AnotherAttribute: 5, …}
2: {NewsID: 90, AnotherAttribute: 5, …}
customProperties: {template: "list-view"}
hideTitle: false
template: "news"
__proto__: Object
至
(6) [{…}, {…}, {…}, false, "football-news", {…}]
0: {NewsID: 90, AnotherAttribute: 5, …}
1: {NewsID: 90, AnotherAttribute: 5, …}
2: {NewsID: 90, AnotherAttribute: 5, …}
3: false
4: "news"
5: {template: "list-view"}
length: 6
__proto__: Array(0)
我要删除任何没有NewsID密钥的项目(arr.pop或过滤器)。
我先感谢您的帮助:)
答案 0 :(得分:3)
您可以使用.filter
进行销毁,以仅通过保留NewsID
给出真实值的对象来过滤出未定义的值(如果NewsID
不存在,则为未定义) ,因此为假)。
此外,您可以使用convertToArray
来完善Object.values()
方法。无需两次遍历键/值。
请参见下面的工作示例:
function convertToArray(data) {
return Object.values(data);
}
const myObj = {
0: {
NewsID: 90,
AnotherAttribute: 5
},
1: {
NewsID: 90,
AnotherAttribute: 5
},
2: {
NewsID: 90,
AnotherAttribute: 5
},
customProperties: {
template: "list-view"
},
hideTitle: false,
template: "news"
},
arr = convertToArray(myObj),
res = arr.filter(({NewsID}) => NewsID);
console.log(res);
注意:
如果您的NewsID
可以是0
,则应使用.filter(({NewsID}) => NewsID !== undefined)
进行检查。
如果您的NewsID
可以具有明确的值undefined
(例如:您使用{NewsID: undefined}
),则应使用.filter((obj) => obj instanceof Object && "NewsID" in obj)
答案 1 :(得分:0)
我可能会误解了您的问题,因为打印输出确实很难读取。
看起来您有一个对象列表,并且想要删除没有特定键的对象,对吗?
您可以通过以下方式进行操作:
result = arr.filter(obj => "NewsID" in obj)
如果您想了解更多有关如何检查对象是否具有键的信息,那么这似乎是一个不错的起点:Checking if a key exists in a JavaScript object?
答案 2 :(得分:0)
在对象的return new DropdownMenuItem<String>(
value: value,
child: new Text(value),
isExpanded: true,
);
上使用简单的布尔过滤器:
Object.values
答案 3 :(得分:0)
您有一个数组,该数组具有对象的不同类型和不同类型的值。 首先,您需要检查数组中的值是否是对象的实例。
function convertToArray(data) {
let arr = [];
Object.keys(data).map(function(key){
arr.push(data[key]);
});
return arr;
}
var obj = {
0: { NewsID: 90, AnotherAttribute: 5},
1: {NewsID: 90, AnotherAttribute: 5},
2: {NewsID: 90, AnotherAttribute: 5},
hideTitle: false,
template: "football-news", customProperties: {template: "list-view"}
};
var arr = convertToArray(obj);
var filterarr = arr.filter(a => a instanceof Object && ("NewsID" in a));
console.log(filterarr);
答案 4 :(得分:0)
尝试一下:
var arr = [
{NewsID: 90, AnotherAttribute: 5},
{NewsID: 90, AnotherAttribute: 5},
{NewsID: 90, AnotherAttribute: 5},
false,
"football-news",
{template: "list-view"}
];
var result = arr.filter(item => item instanceof Object && ("NewsID" in item));
console.log(result);