(javascript)是否可以将一个不同对象类型的数组拆分为一个对象类型的多个数组
(javascript) Is it possible to split an array of different object types into multiple arrays of one object type
所以我有一个数组,其中包含具有不同属性的对象,我想知道如何用整个数组中具有相同属性的对象创建多个数组。
我想离开这个
[
{name:”test”, place:”country”},
{name:”walkAndEat”, Long=100,Lat:15,Location:”place name”},
{name:”test2”,place:”Europe”}
]
至
[
{name:”test”, place:”country”},
{name:”test2”,place:”Europe”}
]
[
{name:”walkAndEat”, Long:100,Lat:15,Location:”place name”}
]
如果您看到相等的对象具有相同的属性,您可以将键作为(字符串化的)索引保留在集合对象中,并检查属性键是否已经存在:
var arrcoll = {};
function add(o){
var keys = JSON.stringify(Object.keys(o).sort());
var arr = arrcoll[keys];
if(arr)
arr.push(o);
else
arrcoll[keys] = [o];
return arr;
}
这可以在飞行中完成,也可以在预先存在的阵列上完成,如Fiddle 中所示
假设您有一个具有不同属性的对象列表,如:
var placesOrPeople = [
{ name: 'Seymour Skinner', occupation: 'Principal' },
{ name: 'Kwik-E-Mart', lat: 23, long: 100 },
{ name: 'Sideshow Bob', occupation: 'Comic Foil' },
{ name: 'Flaming Tyre Yard', lat: 12, long: 88 },
{ name: 'Joe Quimby', occupation: 'Mayor' }
];
你想把它们分类成单独的列表,比如:
places = [
{ name: 'Kwik-E-Mart', lat: 23, long: 100 },
{ name: 'Flaming Tyre Yard', lat: 12, long: 88 }
];
people = [
{ name: 'Seymour Skinner', occupation: 'Principal' },
{ name: 'Sideshow Bob', occupation: 'Comic Foil' },
{ name: 'Joe Quimby', occupation: 'Mayor' }
];
您可以使用内置的Array.filter
命令,如下所示:
var places = placesOrPeople.filter(function(currentPlaceOrPerson) {
if (currentPlaceOrPerson.occupation !== undefined) {
// it must be a person, since locations don't have occupations
return true;
} else {
return false;
}
});
var people = placesOrPeople.filter(function(currentPlaceOrPerson) {
if (currentPlaceOrPerson.lat !== undefined && currentPlaceOrPerson.long !== undefined) {
// it must be a place, since people don't have co-ordinates
return true;
} else {
return false;
}
});
Javascript对象不是集合类型,它们是动态的,这意味着您可以在执行过程中更改它们。
JavaScript是一种松散类型或动态语言。这意味着您不必提前声明变量的类型。在处理程序时,类型将自动确定。这也意味着你可以有相同的变量作为不同的类型:
var anything = arrayOfAnyOtherType[0];
有效。。。如果循环源数组并填充它,则可以定义每个对象的任何行为
相关文章:
- 将单独的数组深层键转换为所需的类型(数组或对象)
- 查找数组javascript中包含的元素类型
- 只能存储一种类型的对象的数组
- 将大数组(字符串和类型数组的混合物)存储到blob或文件中/从blob或文件检索大数组的最佳方式
- 如何使用数组减少来求和对象属性长度,不带类型
- 数组类型字符串导致类型错误的对象
- 寻找Javascript类型数组仿真库
- JavaScript 类型数组 - 不同的视图 - 2.
- JavaScript 类型数组 - 不同的视图
- 将混合数据类型数组从php传递到javascript数组
- 文档集合(类型数组)在JSDoc中返回值和参数
- 将32位整数的非类型数组转换为UInt8Array的最有效方法
- 不能在ChromeOS应用程序中正确保存类型数组
- Typescript:无类型数组
- Javascript类型数组vs简单数组:性能
- 将Javascript基本类型数组划分为多个部分
- 使用Google位置类型数组
- javascript 多维类型数组 (Int8Array) 示例
- JavaScript 类型数组:64 位整数
- Javascript sort()混合数据类型数组