我想做的是:
我有一个函数可以动画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()函数。
我不确定如何:
最后,一旦我对它们进行了排序,我需要随机化拉出的数组键值对,这样每次它动画到不同的margin-left和相关的计数器值。
可能这是一个简单的答案,但我似乎无法理解它。
答案 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]);
});