将对象中的数组传递给函数

时间:2015-02-27 21:22:50

标签: javascript jquery

我想将一个对象作为参数传递给函数,并将事物分配给该对象的属性,然后可以在函数外部访问它们。但我不清楚它是如何完成的。

起初我认为可以使用回调来完成,但我清楚地知道JavaScript不能以这种方式工作。我最终设法让它工作,并且未定义的错误消息开始了。但我现在想通过该函数传递一个数组。如何才能做到这一点?这是我到目前为止所做的,但它似乎没有起作用。

var journey = {};
journey['waypointsArrayItem'] = new Array();
setupAddress(journey)

function setupAddress(journey) {
    var waypointsItem = $('.timeline-item.active-item > .timeline-status > .waypoints').text().substring(4);
    journey.waypointsArrayItem = [];
    journey.waypointsArrayItem = listToArray(waypointsItem, ', ');
    for (var i = 0; i < waypointsArray.length; i++) {
        journey.waypointsArrayItem[i] = journey.waypointsArrayItem[i];
    }
}

2 个答案:

答案 0 :(得分:1)

为函数中的对象赋值属性与在函数外指定属性相同。

function addName(obj, name) {
  obj.name = name;
}

var bob = {};
console.log(bob.name); // undefined
addName(bob, 'Bob');
console.log(bob.name); // 'Bob'

答案 1 :(得分:1)

您正在将数组项复制到自己。从waypointsArray数组复制到journey.waypointsArrayItem数组:

function setupAddress(journey) {
  var waypointsItem = $('.timeline-item.active-item > .timeline-status > .waypoints').text().substring(4);
  var waypointsArray = listToArray(waypointsItem, ', ');
  for (var i = 0; i < waypointsArray.length; i++) {
    journey.waypointsArrayItem[i] = waypointsArray[i];
  }
}

根据您的需要,您也可以只替换整个阵列:

function setupAddress(journey) {
  var waypointsItem = $('.timeline-item.active-item > .timeline-status > .waypoints').text().substring(4);
  journey.waypointsArrayItem = listToArray(waypointsItem, ', ')
}