如何使用键值对作为整数创建一个数组,并循环遍历每个键值对作为参数传递给我的函数?

时间:2017-01-17 10:41:23

标签: javascript jquery arrays random

我想做的是:

我有一个函数可以动画div的余量 - 左边的百分比,带有相关的距离计数器(另一个函数):

function animateValue(amount, counter) {
    myDivToAnimate.animate({
        marginLeft: amount + '%'
    }, 1200, function () {
        slideCounterValue = counter;
    });
}

我称之为如下,这需要小数位:

animateValue(-100.5, -1)

我想做的是制作一个数组或一个对象(我不确定哪个),它有上面的参数。例如:

var myArray = [{-100.5: -1},{-200.8: -2},{-312.5: -3}...]

然后将这些传递给我的animateValue()函数。

我不确定如何:

  • 使用整数创建数组,这些整数是负数且具有小数
  • 将这些对从数组传递给我的animateValue()参数。

最后,一旦我对它们进行了排序,我需要随机化拉出的数组键值对,这样每次它动画到不同的margin-left和相关的计数器值。

可能这是一个简单的答案,但我似乎无法理解它。

3 个答案:

答案 0 :(得分:1)

您不能将JSON密钥作为负整数。请把它作为一个字符串,并根据您的需要进行转换。



var myArray = [{"-100.5": -1},{"-200.8": -2},{"-312.5": -3}];

for(let i in myArray) {
  let tempObj = myArray[i];
  
  for(let key in tempObj) {
    //console.log(parseFloat(key) + "\t" + tempObj[key]);
    
    //call your function here
    animateValue(key, tempObj[key]);
  }
}

function animateValue(a, b) {
  console.log(a + "\t" + b);
}




答案 1 :(得分:1)

如果您选择将值保留在数组中,如下所示,

var myArray = [[-100.5, -1],[-200.8, -2],[-312.5, -3]];

然后很容易迭代它们并传递给函数。

让我们定义一个函数,而不是接受两个数字并使用它们(在我们的例子中返回值和)。

foo = function(a,b) { return a+b; }

然后迭代myArray并将内部数组值作为参数传递给foo函数。

> for(i=0; i<myArray.length; i++) {
... console.log(foo(myArray[i][0], myArray[i][1])); }
-101.5
-202.8
-315.5

或让我们模拟更现实的场景。

> bar = function(a,b) {
... return "pseudo call to someFunction("+a+","+b+")";}

然后,

> myArray.forEach(function(e){
... console.log(bar(e[0], e[1]));})
pseudo call to someFunction(-100.5,-1)
pseudo call to someFunction(-200.8,-2)
pseudo call to someFunction(-312.5,-3)

答案 2 :(得分:0)

您可以将数组转换为对象哈希,并使用第一个参数作为对象键,如下所示:

var myObject = {'-100.5': -1,'-200.8': -2,'-312.5': -3};

我已添加了添加随机化

的示例

var myObject = {'-100.5': -1,'-200.8': -2,'-312.5': -3};
var keys = Object.keys(myObject).sort(function(a, b) {
  return Math.random() < Math.random() ? 1 : 0;
});

keys.forEach(function(key) {
  console.log(key, myObject[key]);
});