javascript - Javascript 中的参数和对象文字

标签 javascript

我有一个函数可以传递一些值。我创建一个数组并想要创建两个名称/值对。参数 valueFielddisplayField 是我传入的字符串。

在我实例化comboStore的底部,valueField和displayField被视为参数,这很好。但是,当我将对象推送到 dataArray 时,valueField 和 displayField 不会被视为参数,而是被视为文字值。

test:function (valueField, displayField, x, y) {

    var dataArray = []

    dataArray.push(
        {
            valueField: x, //this line does not use paramaters
            displayField: y //this line does not use paramaters
        }
    )

    var comboStore = {
        fields: [valueField,displayField], //this line uses paramaters
        data: dataArray
    }


    return comboStore;
},

如何像这样参数化对象文字?

我尝试过:

'' + valueField + '': x 

但这似乎不起作用。

最佳答案

使用subscript (or "bracket")符号而不是点符号:

var data = {};
data[valueField] = x;
data[displayField] = y;
dataArray.push(data);

这可行,但很冗长。您可以编写一个函数来封装对象创建逻辑:

function dataPoint(valueField, displayField, x, y) {
  var data = {};
  data[valueField] = x;
  data[displayField] = y;

  return data;
}

dataArray.push(dataPoint('a', 'b', 1, 2));
dataArray.push(dataPoint('c', 'd', 3, 4)); 

如果您的 valueFielddisplayField 属性是常量,您可以使用工厂函数进一步干燥代码:

function dataPointFactory(valueField, displayField) {

  return function(x, y) {
    var data = {};
    data[valueField] = x;
    data[displayField] = y;
    return data;
  }    
}

var makeDataPoint = dataPointFactory('valueField1', 'displayField1');

dataPoint.push(makeDataPoint(1, 2));
dataPoint.push(makeDataPoint(3, 4));

关于javascript - Javascript 中的参数和对象文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26034234/

相关文章:

javascript - 我的第二个功能不是删除父元素

javascript - 在 JavaScript 函数中引用表格中的左侧单元格

php - Jquery从列表淡出后滑动到位置效果

javascript - 如何在 Javascript 的正则表达式中包含变量?

javascript - d3.js - 带有嵌套 g 节点的圆形包布局

javascript - 将数组拆分为 block / block 并对其进行一一操作

javascript - 如何快速将剪贴板的内容粘贴到 Chrome 开发控制台中的变量中?

javascript - 尝试在主屏幕网络应用程序中访问 ics 文件时出现“无法下载此文件”

javascript - 通过坐标获取子元素

javascript - VuetifyJS 工具栏在添加固定 Prop 后立即覆盖内容