JavaScript中未排序的ArrayList

时间:2014-10-23 10:37:48

标签: javascript arrays list

我正在尝试在刷新时生成包含随机对象的列表。现在,当我使用它时,它会在下面的列表中显示为“object Object”,但它不会生成新的列表。

var products = [{
  name: 'Apple',
  price: 1.00
}, {
  name: 'Orange',
  price: 1.20
}, {
  name: 'Lemon',
  price: 1.10
}];

document.write(products[Math.floor(Math.random() * 3)]);
<ul class="products">
  <li>Apple: $1.00</li>
  <li>Orange: $1.20</li>
  <li>Lemon: $1.10</li>
</ul>

3 个答案:

答案 0 :(得分:1)

因为document.write期待一个字符串,但是你传递了一个数组对象。

你可以这样使用JSON.stringify

 var products = [{
    name: 'Apple',
    price: 1.00
}, {
    name: 'Orange',
    price: 1.20
}, {
    name: 'Lemon',
    price: 1.10
}];

document.write(JSON.stringify(products[Math.floor( Math.random() * 3 )]));

答案 1 :(得分:1)

var object = products[Math.floor(Math.random() * 3)];
document.write(object.name + ': ' + object.price);

现在,为了有趣的部分:如何以随机顺序显示whoe列表。首先我将复制你的数组,然后将使用mixin函数,最后将显示它。这个功能可以通过多种方式完成。

function shuffle(array) {
  var currentIndex = array.length, temporaryValue, randomIndex ;

  // While there remain elements to shuffle...
  while (0 !== currentIndex) {

    // Pick a remaining element...
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex -= 1;

    // And swap it with the current element.
    temporaryValue = array[currentIndex];
    array[currentIndex] = array[randomIndex];
    array[randomIndex] = temporaryValue;
  }

  return array;
}

var newArr = shuffle(products.slice(0)); // will shuffle copy of your array (optional)
for (var i=0; i< arr.length;i++){
   document.write(newArr[i].name + ': ' + newArr[i].price);
}

更好的解决方案是创建索引数组。每次你调用一个选择随机索引的方法时,你都会显示它。之后,您将从索引数组中删除它,以便每次显示记录时索引数组都会变小。最后它将为空,您的功能将结束。

答案 2 :(得分:0)

尝试将document.write语句包装在JSON.stringify中,这会将对象字符串化为可打印的字符串:

document.write (JSON.stringify(products[Math.floor( Math.random() * 3 )]));