javascript - 如何仅传递键及其值作为javascript对象的参数

标签 javascript jquery jquery-select2

为了减少代码长度,我决定创建 JavaScript 函数来初始化 select2 插件。现在我正在编写非常冗长的代码来初始化一个元素。

$("#add_multiple_lr #trips_div .last_added .location_id").select2({
  initSelection: function(element, callback) {
    var elementText = $(element).attr('json-value');
    callback(JSON.parse(elementText));
  },
  minimumInputLength: 2,
  ajax: {
    url: "<?php echo site_url('masters/locations/json_search'); ?>",
    dataType: 'json',
    type: "POST",
    quietMillis: 50,
    data: function (term) {
      return {
        term: term,
        location_type: 'station',
        location_county: ['india', 'bangladesh']
      };
    },
    results: function (data) {
      return {
        results: $.map(data, function (item) {
          return {
            text: item.text,
            id: item.id
          }
        })
      };
    }
  }
});

对于一两个元素来说,编写这段代码是可以的,但是当涉及到 10-15 个元素时,我在下面开发的代码就变得非常困惑和冗长。

function initSelect2(reference, url, additional_data = {}, minimumInputLength = 2)
{
  $(reference).select2({
    initSelection: function(element, callback) {
      var elementText = $(element).attr('json-value');
      callback(JSON.parse(elementText));
    },
    minimumInputLength: minimumInputLength,
    ajax: {
      url: url,
      dataType: 'json',
      type: "POST",
      quietMillis: 50,
      data: function (term) {
        return {
          term: term,
          additional_data
        };
      },
      results: function (data) {
        return {
          results: $.map(data, function (item) {
            return {
              text: item.text,
              id: item.id
            }
          })
        };
      }
    }
  });
}

并将其称为

initSelect2(
  "#add_multiple_lr #lr_party, #add_multiple_lr #lr_payable_party",
  "<?php echo site_url('masters/locations/json_search'); ?>",
  {location_type: 'station', location_country: ['india', 'bangladesh']}
);

我只想返回additional_data(参数)的键及其属性。

最佳答案

您可以使用扩展语法来实现:

return {
    term,
    ...additional_data
};

对于较旧的浏览器,您可以依赖 jQuery extend 方法(正如您似乎使用 jQuery 一样):

return $.extend({ term: term }, additional_data);

关于javascript - 如何仅传递键及其值作为javascript对象的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52991874/

相关文章:

javascript - 基于 JavaScript 中的字符串创建自定义配色方案

javascript - 如何将单击事件委托(delegate)给 jQuery 元素数组的子元素?

jquery-select2 - 在 Select2 事件中获取选中的选项,当可以选择多个选项时

javascript - Select2 Jquery 在选择项目后删除搜索项

javascript - 带递归的 JS Curry 函数

javascript - 每个定义的时间延迟关键帧并在动画后保持不透明度为 0

javascript - $.post 总是返回从 mvc 发起的 View

jquery - 如何从外部列表框中控制 select2 选择框?

javascript - 如何将数组映射到javascript中的对象

jquery - 悬停时使缩略图变暗