我已经开始使用techique通过向数组添加键属性来索引数组。如果您希望保留数组的顺序,并对其进行快速查找(尤其是从JSON获取数据集时),这非常有用。各个键属性的优点是它们是对数组中保存在内存中的原始项的引用。
有人能想到这种技术的任何记忆/影响吗?我已经遇到了一些小问题,例如:
除此之外,这似乎是在维护数组时对数组进行索引的最好方法。
var keyArray = function(arrayToKey,property){
if (typeof arrayToKey !== 'undefined') {
arrayToKey.key = {};
var l = arrayToKey.length,
i = 0;
if (typeof property !== 'undefined') {
for (i = 0; i < l; i++) {
if (arrayToKey[i] !== null) {
arrayToKey.key[arrayToKey[i][property]] = arrayToKey[i];
}
}
} else {
for (i = 0; i < l; i++) {
if (arrayToKey[i] !== null) {
arrayToKey.key[arrayToKey[i]] = true;
}
}
}
} else {
return null;
}
};
这需要一个数组,并且:将其键入每个数组项的内容,或者如果传入属性名称,则将其键入数组中每个对象的属性,例如。
Example 1:
keyArray(['hello','nice','world']);
->
['hello',' ','world'].key{
hello: true,
nice, true,
world, true
};
Example 2:
keyArray([
{
name: 'hello',
value: 'hello value'
},
{
name: 'nice',
value: ' value'
},
{
name: 'world',
value: 'world value'
}
]);
->
[
{
name: 'hello',
value: 'hello value'
},
{
name: 'nice',
value: ' value'
},
{
name: 'world',
value: 'world value'
}
].key{
hello: {
name: 'hello',
value: 'hello value'
},
nice: {
name: 'nice',
value: 'nice value'
},
world: {
name: 'world',
value: 'world value'
}
};