我想循环遍历数组中包含的对象并更改每个对象的属性.如果我这样做:
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j]);
}
Run Code Online (Sandbox Code Playgroud)
控制台应该调出阵列中的每个对象,对吧?但实际上它只显示第一个对象.如果我控制台将数组记录在循环外部,那么所有对象都会出现,所以肯定会有更多.
无论如何,这是下一个问题.如何使用循环访问数组中的Object1.x?
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j.x]);
}
Run Code Online (Sandbox Code Playgroud)
这将返回"未定义".循环外的控制台日志再次告诉我,对象都具有"x"的值.如何在循环中访问这些属性?
我被推荐到其他地方为每个属性使用单独的数组,但我想确保我已经用尽了这个大道.
谢谢!
我知道LinkedHashMap有一个可预测的迭代顺序(插入顺序).是否Set通过返回LinkedHashMap.keySet()和Collection返回的LinkedHashMap.values()也维持这种秩序?
在Java中,迭代字符串中所有字符的最快方法是什么,这:
String str = "a really, really long string";
for (int i = 0, n = str.length(); i < n; i++) {
char c = str.charAt(i);
}
Run Code Online (Sandbox Code Playgroud)
或这个:
char[] chars = str.toCharArray();
for (int i = 0, n = chars.length; i < n; i++) {
char c = chars[i];
}
Run Code Online (Sandbox Code Playgroud)
编辑:
如果重复调用的成本是什么,我想知道的是charAt长迭代期间方法最终是要么不是比执行一个调用的成本小于或大于toCharArray开头,然后直接在迭代期间访问阵列.
如果有人能够为不同的字符串长度提供强大的基准测试,考虑到JIT预热时间,JVM启动时间等等,而不仅仅是两次调用之间的差异,那就太棒了System.currentTimeMillis().
我有一个python对象,有几个属性和方法.我想迭代对象属性.
class my_python_obj(object):
attr1='a'
attr2='b'
attr3='c'
def method1(self, etc, etc):
#Statements
Run Code Online (Sandbox Code Playgroud)
我想生成一个包含所有对象属性及其当前值的字典,但我想以动态的方式进行(所以如果以后我添加另一个属性,我也不必记得更新我的函数).
在PHP中,变量可以用作键,但是python中的对象是不可编写的,如果我使用点符号,它会创建一个名为my var的新属性,这不是我的意图.
只是为了让事情更清楚:
def to_dict(self):
'''this is what I already have'''
d={}
d["attr1"]= self.attr1
d["attr2"]= self.attr2
d["attr3"]= self.attr3
return d
Run Code Online (Sandbox Code Playgroud)
·
def to_dict(self):
'''this is what I want to do'''
d={}
for v in my_python_obj.attributes:
d[v] = self.v
return d
Run Code Online (Sandbox Code Playgroud)
更新:使用属性我只是指这个对象的变量,而不是方法.
在bash中迭代范围的方法是
for i in {0..10}; do echo $i; done
Run Code Online (Sandbox Code Playgroud)
使用步骤迭代序列的语法是什么?说,我想在上面的例子中得到偶数.
考虑:
>>> lst = iter([1,2,3])
>>> next(lst)
1
>>> next(lst)
2
Run Code Online (Sandbox Code Playgroud)
因此,正如预期的那样,推进迭代器是通过改变同一个对象来处理的.
在这种情况下,我希望:
a = iter(list(range(10)))
for i in a:
print(i)
next(a)
Run Code Online (Sandbox Code Playgroud)
跳过每个第二个元素:调用next应该使迭代器前进一次,然后循环的隐式调用应该再次前进 - 并且第二次调用的结果将被分配给i.
它没有.循环打印列表中的所有项目,而不跳过任何项目.
我的第一个想法是,这可能发生,因为循环调用iter它传递的内容,这可能会给出一个独立的迭代器 - 事实并非像我们所说的那样iter(a) is a.
那么,为什么next在这种情况下似乎没有推进迭代器呢?
在我的脚本中,我需要在给定开始日期和结束日期的情况下,通过日期范围执行一组操作.
请为我提供使用Java实现此目的的指导.
for ( currentDate = starDate; currentDate < endDate; currentDate++) {
}
Run Code Online (Sandbox Code Playgroud)
我知道上面的代码根本不可能,但我这样做是为了向您展示我想要实现的目标.
我有纬度列表和经度列表,需要迭代纬度和经度对.
是否更好:
A.假设列表长度相等:
for i in range(len(Latitudes)):
Lat,Long=(Latitudes[i],Longitudes[i])
Run Code Online (Sandbox Code Playgroud)B.或者:
for Lat,Long in [(x,y) for x in Latitudes for y in Longitudes]:
Run Code Online (Sandbox Code Playgroud)(注意B是不正确的.这给了我所有的对,相当于itertools.product())
关于每个的相对优点的任何想法,或者更多的pythonic?
var user = {};
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个setUsers()接受键/值对对象并初始化user变量的方法.
setUsers = function(data) {
// loop and init user
}
Run Code Online (Sandbox Code Playgroud)
数据如下:
234: "john", 23421: "smith", ....
Run Code Online (Sandbox Code Playgroud) 假设你有一个像这样的javascript对象:
var data = { foo: 'bar', baz: 'quux' };
Run Code Online (Sandbox Code Playgroud)
您可以通过属性名称访问属性:
var foo = data.foo;
var baz = data["baz"];
Run Code Online (Sandbox Code Playgroud)
但是,如果您不知道属性的名称,是否可以获取这些值?这些属性的无序性质是否使它们无法区分?
在我的情况下,我特别想到一个函数需要接受一系列名称 - 值对的情况,但属性的名称可能会改变.
到目前为止,我对如何执行此操作的想法是将属性的名称与数据一起传递给函数,但这感觉就像一个黑客.如果可能的话,我宁愿用内省来做这件事.
iteration ×10
java ×3
javascript ×3
python ×3
list ×2
arrays ×1
attributes ×1
bash ×1
char ×1
date ×1
for-loop ×1
iterator ×1
key-value ×1
loops ×1
object ×1
oop ×1
performance ×1
properties ×1
range ×1
string ×1