我们有这样的循环:
for (var prop in obj) {
if (obj.hasOwnProperty(prop) {
// Here need operation only for first iteration (1)
// Other operations
}
}
我们如何识别(1)中的第一次迭代?
答案 0 :(得分:12)
如果可以,请将其移出循环:
do_one_time_thing();
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
// Other operations
}
}
否则,设置一个标志,并在第一次迭代后降低它:
var first_iteration = true;
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
if (first_iteration) {
do_one_time_thing();
first_iteration = false;
}
// Other operations
}
}
答案 1 :(得分:5)
由于没有循环计数器,您需要自己跟踪:
var first = true;
for (var prop in obj) {
if (obj.hasOwnProperty(prop) {
if (first) {
first = false;
// Here need operation only for first iteration (1)
}
// Other operations
}
}
答案 2 :(得分:4)
你可以使用forEach
array.forEach((element,index) => {
if(index==0){
// first element
}else{
// not first element
}
});
答案 3 :(得分:3)
不保证以可预测的顺序列出属性(正如其他人所说)。
因此,您可以使用Object.keys将对象属性作为数组获取,对该数组进行排序并获取第一个元素:
var firstProperty = Object.keys(obj).sort()[0];
// firstValue = obj[firstProperty];
答案 4 :(得分:2)
假设您不关心第一项是什么,那么您可以Object.keys()
使用.forEach()
来避免使用标记。
有了这个,您也不需要使用.hasOwnProperty()
,因为Object.keys()
会为您处理。{/ p>
Object.keys(obj).forEach(function(key, i) {
if (i === 0) {
console.log("first", obj[key]);
}
console.log(obj[key]);
});