在javascript中过滤对象

时间:2019-10-07 10:02:31

标签: javascript arrays object

我是javascript的初学者。

我正在尝试过滤到对象列表中。

例如,目标是如果类型与“小部件”不匹配,那么您将被排除在外。

我需要一个例子来做其余的事情

谢谢您的帮助

var ariastatesproperties = {
	'aria-activedescendant': { type: 'relationship' }, // id reference
	'aria-atomic': { type: 'live region', global: true, default: 'false', values: ['false', 'true'] },
	'aria-autocomplete': { type: 'widget', default: 'none', values: ['both', 'inline', 'list', 'none'] },
	'aria-busy': { type: 'live region', global: true, default: 'false', values: ['false', 'true'] },
	'aria-checked': { type: 'widget', default: 'undefined', values: ['false', 'mixed', 'true', 'undefined'] },
	'aria-colcount': { type: 'relationship' }, // integer
	'aria-colindex': { type: 'relationship' }, // integer
	'aria-colspan': { type: 'relationship' }, // integer
	'aria-controls': { type: 'relationship', global: true }, // id reference list
	'aria-current': { global: true, default: 'false', values: ['date', 'false', 'location', 'page', 'step', 'time', 'true'] }
}

这是我要在过滤时执行的测试的示例。

我想保持相同的结构。

这是个好方法吗?

我有一个错误,因为每个都不起作用

createTest({
    lang: 'fr',
    name: "Test sur ARIA",
    query: Object.entries(ariastatesproperties),
    filter:
    function(e){
            return ariastatesproperties[e].type=='widget'}.forEach(function(e){obj[e]=ariastatesproperties[e]})


}) 

2 个答案:

答案 0 :(得分:0)

使用过滤器和forEach循环

var ariastatesproperties = {
	'aria-activedescendant': { type: 'relationship' }, // id reference
	'aria-atomic': { type: 'live region', global: true, default: 'false', values: ['false', 'true'] },
	'aria-autocomplete': { type: 'widget', default: 'none', values: ['both', 'inline', 'list', 'none'] },
	'aria-busy': { type: 'live region', global: true, default: 'false', values: ['false', 'true'] },
	'aria-checked': { type: 'widget', default: 'undefined', values: ['false', 'mixed', 'true', 'undefined'] },
	'aria-colcount': { type: 'relationship' }, // integer
	'aria-colindex': { type: 'relationship' }, // integer
	'aria-colspan': { type: 'relationship' }, // integer
	'aria-controls': { type: 'relationship', global: true }, // id reference list
	'aria-current': { global: true, default: 'false', values: ['date', 'false', 'location', 'page', 'step', 'time', 'true'] }
}

var obj={};
Object.keys(ariastatesproperties).filter(function(e){return ariastatesproperties[e].type=='widget'}).forEach(function(e){obj[e]=ariastatesproperties[e]})
console.log(obj)

答案 1 :(得分:0)

您可以使用Object.entries()函数“查询”对象

const data = {
	'aria-activedescendant': { type: 'relationship' }, // id reference
	'aria-atomic': { type: 'live region', global: true, default: 'false', values: ['false', 'true'] },
	'aria-autocomplete': { type: 'widget', default: 'none', values: ['both', 'inline', 'list', 'none'] },
	'aria-busy': { type: 'live region', global: true, default: 'false', values: ['false', 'true'] },
	'aria-checked': { type: 'widget', default: 'undefined', values: ['false', 'mixed', 'true', 'undefined'] },
	'aria-colcount': { type: 'relationship' }, // integer
	'aria-colindex': { type: 'relationship' }, // integer
	'aria-colspan': { type: 'relationship' }, // integer
	'aria-controls': { type: 'relationship', global: true }, // id reference list
	'aria-current': { global: true, default: 'false', values: ['date', 'false', 'location', 'page', 'step', 'time', 'true'] }
};
  
let result = Object.entries(data).filter(([key, value]) => value.type == 'widget');

console.log(result);