这些是几个数组名称:
var Transport = ['Bus', 'Car', 'Truck', 'Train'];
var Fruits = ['Apple', 'Banana', 'Grape'];
var Animals = ['Dog', 'Cat', 'Horse', 'Sheep'];
我有一个像这样的结果集:
var x = [
{'name': 'Bus'},
{'name': 'Banana'},
{'name': 'Car'},
{'name': 'Dog'},
{'name': 'Truck'},
{'name': 'Cat'}
];
现在我想要什么一些逻辑返回哪个元素取决于哪个类别。示例是这样的
//what I want:
var newresultTransport = ['Bus', 'Car', 'Truck'];
var newresultAnimal = ['Dog', 'Cat'];
var newresultFruits = ['Banana'];
任何帮助表示赞赏
您可以为组使用对象,单个值和结果。然后生成一个哈希表以获取每个名称的组,并使用它在结果集中创建一个组并将名称推送到该组。
var groups = { transport: ['Bus', 'Car', 'Truck', 'Train'], fruits: ['Apple', 'Banana', 'Grape'], animals: ['Dog', 'Cat', 'Horse', 'Sheep'] },
array = [{ name: 'Bus' }, { name: 'Banana' }, { name: 'Car' }, { name: 'Dog' }, { name: 'Truck' }, { name: 'Cat' }],
hash = {},
grouped = {};
Object.keys(groups).forEach(function (k) {
groups[k].forEach(function (a) {
hash[a] = k;
});
});
array.forEach(function (o) {
var k = hash[o.name];
grouped[k] = grouped[k] || [];
grouped[k].push(o.name);
});
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }
首先使用x
将map
转换为字符串数组
x = x.map( s => s.name ) ;
现在使用filter
newresultTransport = Transport.filter( s => x.indexOf( s ) != -1 );
同样适用于水果和动物
newresultAnimal = Fruits.filter( s => x.indexOf( s ) != -1 );
newresultFruits = Animals.filter( s => x.indexOf( s ) != -1 );
演示
var Transport = ['Bus', 'Car', 'Truck', 'Train'];
var Fruits = ['Apple', 'Banana', 'Grape'];
var Animals = ['Dog', 'Cat', 'Horse', 'Sheep'];
var x = [
{'name': 'Bus'},
{'name': 'Banana'},
{'name': 'Car'},
{'name': 'Dog'},
{'name': 'Truck'},
{'name': 'Cat'}
];
x = x.map( s => s.name ) ;
var newresultTransport = Transport.filter( s => x.indexOf( s ) != -1 );
var newresultAnimal = Fruits.filter( s => x.indexOf( s ) != -1 );
var newresultFruits = Animals.filter( s => x.indexOf( s ) != -1 );
console.log( newresultTransport , newresultAnimal , newresultFruits );
在您的问题中创建var“x”时:
var x = [
{'name': 'Bus'},
{'name': 'Banana'},
{'name': 'Car'},
{'name': 'Dog'},
{'name': 'Truck'},
{'name': 'Cat'}
]
1)你省略了类别。您可以修改“x”以包含每个对象的“类别”属性。
var x = [
{'name': 'Bus', 'category':'transport'},
{'name': 'Banana', 'category':'fruit'},
{'name': 'Car', 'category':'transport'},
{'name': 'Dog', 'category':'animal'},
{'name': 'Truck', 'category':'transport'},
{'name': 'Cat', 'category':'animal'}
]
2)然后,您可以使用过滤器将阵列过滤到所需的类别。例:
var x = [
{'name': 'Bus', 'category':'transport'},
{'name': 'Banana', 'category':'fruit'},
{'name': 'Car', 'category':'transport'},
{'name': 'Dog', 'category':'animal'},
{'name': 'Truck', 'category':'transport'},
{'name': 'Cat', 'category':'animal'}
]
const justTransport = x.filter(function(el){
return el.category === "transport"
});
console.log(justTransport);