我需要从值列表中格式化数组。
目前我有以下硬编码点:
points = [
{x: 20, y: 112},
{x: 23, y: 101},
{x: 51, y: 89},
{x: 63, y: 89},
{x: 84, y: 129},
{x: 64, y: 153},
{x: 45, y: 151},
{x: 38, y: 140},
{x: 28, y: 150},
{x: 10, y: 144},
{x: 0, y: 130},
{x: 10, y: 114}
];
生成的数组将传递给函数。
我现在需要将另一个数组传递给同一个函数,但我不能像上面那样对它们进行硬编码。相反,我使用JS框架动态获取点,例如,$(#container).get('points');
如何转换新数组,使其格式与x:|类似y:结构如上?
points="20,112, 23,101, 51,89, 63,89, 84,129, 64,153, 45,151, 38,140, 28,150, 10,144, 0,130, 10,114"
我在MooTools中找到了以下内容:
Array.each([1, 2, 3], function(number, index)
{
alert('x:' + number + ', y: ' + index);
});
......但不知何故,这似乎不是正确的方法。
我可以获得一些指导吗?
答案 0 :(得分:4)
你可以split
[docs]字符串并迭代它,在每次迭代中取两个值:
var parts = points.split(',');
var pointsArray = [];
for(var i = 0, l = parts.length; i < l; i += 2) {
pointsArray.push({x: +parts[i], y: +parts[i+1]});
}
答案 1 :(得分:0)
你应该将它拆分两次:
var points = "12,12, 1,2, 3,4"
var arr = points.split(', ');
for(var i = 0; i< arr.length; i++)
{
var point = arr[i].split(',');
document.write(point+ ' <br />' );
arr[i] = {x:point[0], y:point[1]};
document.write(' '+arr[i].x + ' ' + arr[i].y + ' <br/>');
}
除此之外,就像其他评论一样。