javascript - 如何将对象属性作为参数传递? (JavaScript)

标签 javascript function object properties parameters

我不确定标题是否适合我想要实现的目标

我正在将 JSON 结果映射到数组。因为我需要一遍又一遍地执行此操作,所以我想将代码放入一个函数中。

在下面的例子中我会重复自己的话。我有名为 item.data1、item.data2 的属性,在第二个示例中为 item.something1、item.something2 ...如何将这些属性作为“常规”参数传递给新创建的函数,以便在那里使用它们而不是重复一遍要归还那些 map 吗?新函数应该可用于下面的两个示例以及属性可能具有不同名称的其他情况。

service.getData(function(data) {
    var map = {};
    map = $.map(data, function(item, i) {
        var entry = {};

        entry.key = item.data1;
        entry.value = item.data2;

        return entry;
    });
});

service.getSomething(function(data) {
    var map = {};
    map = $.map(data, function(item, i) {
        var entry = {};

        entry.key = item.something1;
        entry.value = item.something2;

        return entry;
    });
});

最佳答案

使用 [] 和字符串来动态地从对象中提取属性。

var a = { foo: 123 };
a.foo    // 123
a['foo'] // 123

var str = 'foo';
a[str]   // 123

这意味着我们可以像这样重构您的方法,只需将您想要读取的属性名称作为字符串传递即可。

var getKeyValueMap = function(data, keyPropName, valuePropName) {
  return $.map(data, function(item, i) {
    return {
      key:   item[keyPropName],
      value: item[valuePropName]
    }
  });
};

service.getData(function(data) {
  return getKeyValueMap(data, 'data1', 'data2');
});

service.getSomething(function(data) {
  return getKeyValueMap(data, 'something1', 'something2');
});

关于javascript - 如何将对象属性作为参数传递? (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13760186/

相关文章:

javascript - 填充第二个下拉菜单取决于第一个下拉菜单

带字典的 JavaScript 策略模式

javascript - Nativescript-Drop-Down 在 javascript 中获取值

javascript - IE8 中的 Ajax 奇怪行为

javascript - 使函数仅在事件/聚焦的输入/按钮/文本区域上工作的 jQuery 或 javaScript 语法是什么?

c - 我必须要求用户输入一个长度为 n 的数组 a1。然后使用函数打印数组中的每三个元素

java - 正在创建多少个对象?

function - Haskell 函数定义约定

node.js - NodeJS 如何将对象添加到集合中并进行迭代?

ruby - .nil?, .blank? 之间的区别?和.empty?