获取包含对象的数组的索引的最佳方法是什么?
想象一下这种情况:
var hello = {
hello: 'world',
foo: 'bar'
};
var qaz = {
hello: 'stevie',
foo: 'baz'
}
var myArray = [];
myArray.push(hello,qaz);
Run Code Online (Sandbox Code Playgroud)
现在我想拥有属性indexOf的对象,在这个例子中,它将是.hello'stevie'1
我是JavaScript的新手,我不知道是否有一个简单的方法,或者我是否应该构建自己的函数来做到这一点.
我从书中学到了你应该写这样的循环:
for(var i=0, len=arr.length; i < len; i++){
// blah blah
}
Run Code Online (Sandbox Code Playgroud)
所以arr.length每次都不会计算.
其他人说编译器会对此做一些优化,所以你可以写:
for(var i=0; i < arr.length; i++){
// blah blah
}
Run Code Online (Sandbox Code Playgroud)
我只是想知道哪种是最好的练习方式?
在 其他 语言和其他非懒惰的 JavaScript版本中还有其他问题,但我找不到懒惰的JavaScript版本.
给定一个任意数量的任意大小数组的数组:
var sets = [ [2,3,4,5], ['sweet','ugly'], ['cats','dogs','hogs'] ];
Run Code Online (Sandbox Code Playgroud)
和回调函数:
function holla( n, adj, noun ){
console.log( [n,adj,noun].join(' ') );
}
Run Code Online (Sandbox Code Playgroud)
什么是优雅的方式来迭代整个产品空间而不首先创建大量所有可能的组合?
lazyProduct( sets, holla );
// 2 sweet cats
// 2 sweet dogs
// 2 sweet hogs
// 2 ugly cats
// 2 ugly dogs
// 2 ugly hogs
// 3 sweet cats
// 3 sweet dogs
// 3 sweet hogs
// 3 ugly cats
// 3 ugly dogs
// …Run Code Online (Sandbox Code Playgroud) 我试图在Ionic Framework中创建一个用于列表目的的数组,并检查所有callcenter名称的第一个char,将它们添加到字母数组中.
for (var i = 0; i < callcenterList.length; i++) {
var value = callcenterList[i]._owner && callcenterList[i]._owner.company.name[0];
if ((alphabet.indexOf(value) == -1 && isNaN(parseInt(value))) ||
(isNaN(alphabet[0]) && !isNaN(value))) {
if(!isNaN(value))
value = 123;
alphabet.push(value);
callcenterList.splice(i, 0, {
divider: {
alphabet: value
}
});
}
};
Run Code Online (Sandbox Code Playgroud)
更换value = 123用value = '#'的原因谷歌浏览器和谷歌Chrome金丝雀发生故障,并立即在Mac上使用最多的RAM 100%.
这是一个Javascript错误还是与Google Chrome本身有关?