从点创建数组

时间:2011-09-11 22:20:55

标签: javascript jquery arrays mootools

我需要从值列表中格式化数组。

目前我有以下硬编码点:

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);
});

......但不知何故,这似乎不是正确的方法。

我可以获得一些指导吗?

2 个答案:

答案 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/>');
}

除此之外,就像其他评论一样。