在Javascript中迭代List对象

时间:2017-01-17 14:57:08

标签: javascript spring-mvc

如何在Javascript中迭代List对象?它包含多个值。

 List <controllerclass> obj = dao.listimpl();

我试过了:

 for (index = 0; index < obj .length; ++index) {
        console.log(obj [index]);
    }

3 个答案:

答案 0 :(得分:0)

对象没有像数组一样的长度属性。 请使用以下代码进行迭代

 for (var key in obj) {
          if (obj.hasOwnProperty(key)){

          alert("property  "+key+ " is " + obj[key] ); 
   }
  }

希望这能解决你的问题。

答案 1 :(得分:0)

首先List <controllerclass> obj = dao.listimpl();这是您粘贴的java代码,尝试粘贴您尝试迭代的确切对象。

虽然我建议使用非常轻量级的JavaScript库Loadash,这非常方便,当你处理数组/对象并循环遍历这些项目和更多的util方法时。

_.forOwn(obj, function(value, key) { } );

Loadash - forOwn

迭代对象的自己的可枚举字符串键控属性,并为每个属性调用iteratee。使用三个参数调用iteratee:(value,key,object)。 Iteratee函数可以通过显式返回false

来提前退出迭代

答案 2 :(得分:0)

使用Iterators in Javascript is new to ES6循环并在下面解释。

MDN Iterators and generators - 解释说,在Javascript中,迭代器是一个只有next()方法的数据对象。从Iterator.next()返回的结果有一个next()方法,done和value属性。下面使用Javascript Set对象显示一个示例。

let aCollection = new Set(['item1', 'item2', 'item3']);
let it = aCollection[Symbol.iterator]();
console.log('iterator is', it)
console.log('it.done - is not meaningful', it.done); // notice that it.done is not defined!
let itLoop = it.next()
console.log('it.next()', itLoop);
console.log('it.next().value', itLoop.value);
console.log('it.next().done', itLoop.done);

以上示例代码的输出是:

iterator is SetIterator { 'item1', 'item2', 'item3' }
it.done - is not meaningful undefined
it.next() { value: 'item1', done: false }
it.next().value item1
it.next().done false

Set.prototype@@iterator - 解释如何使用Set迭代器。令我困惑的是为什么示例没有包含循环,所以我在下面提供示例。

用于......的

使用迭代器循环的最简单方法是使用描述here in MDN的for(收集项)语法。循环的更完整描述是covered very well here

for(let item of aCollection){
    console.log('for...of returns ', item);
}

使用for(;;)

接下来是使用迭代器的for循环。

for(let it = aCollection[Symbol.iterator](), loop = it.next(); ! loop.done; loop = it.next()){
    console.log('for(;;) ', loop.value);
}

使用while循环

接下来是使用迭代器的while循环:

let it = aCollection[Symbol.iterator]();
let loop = it.next();
while (! loop.done){
    console.log('while loop ', loop.value);
    loop = it.next();
}

希望这有助于某人。完整的可运行示例位于https://jsfiddle.net/PatS2265/y5a4hvb7/4/。没有HTML或CSS,只有Javascript console.log输出,所以打开浏览器控制台窗口看输出。