For循环不使用JavaScript函数的参数
For loop not using argument from JavaScript function
我想在我的server.js文件中运行这个函数:
function formatArr (targetArr, characteristic, formattedArr) {
console.log(characteristic);
for (var i = 0; i < targetArr.length; i++) {
formattedArr.push({characteristic:targetArr[i]})
};
return formattedArr;
};
如果我这样称呼它:
var targetSize = Object.keys(JSON.parse(req.query.size)); //[s,m,l]
var sizeKey = "size";
// format size array for mongodb query
var formattedSize = [];
var formattedSize = formatArr(targetSize, sizeKey, formattedSize);
console.log(formattedSize);
它将console日志"size",但它不会用formattedSize数组中的单词大小替换单词特征。下面是我在服务器控制台中得到的内容:
size
[ { characteristic: 's' },{ characteristic: 'm' },{ characteristic: 'l' } ]
我如何使它与数组内的大小替换特征?这是我想要的输出:
size
[ { size: 's' },{ size: 'm' },{ size: 'l' } ]
我希望能够重用具有其他特性的formatArr函数
您应该使用括号标记变量属性名:
function formatArr (targetArr, characteristic, formattedArr) {
console.log(characteristic);
for (var i = 0; i < targetArr.length; i++) {
var obj = {};
obj[characteristic] = targetArr[i];
formattedArr.push(obj);
};
return formattedArr;
};
有点啰嗦,但仍然。如果你是在ES2015友好的环境中,你可以使用更短的语法:
for (var i = 0; i < targetArr.length; i++) {
formattedArr.push({[characteristic]: targetArr[i]});
};
试试这个:
function formatArr (targetArr, characteristic, formattedArr) {
for (var i = 0; i < targetArr.length; i++) {
var obj = {};
obj[characteristic:targetArr] = targetArr[i]
formattedArr.push(obj)
};
return formattedArr;
};
在非常新的JavaScript环境中,您可以这样写:
formattedArr.push({ [characteristic]: targetArr[i] })
否则,您将不得不像@dfsq的答案那样一步一步地构建对象。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 为什么不'我们在javascript中使用函数参数的数据类型
- 使用闭包共享构造函数参数
- 函数参数的值错误
- 当一个重要的构造函数参数丢失时应该发生什么
- 阻止ReSharper将JavaScript函数参数放到新行中
- 根据函数参数将CSS值存储在var中,然后对其进行操作
- 使构造函数参数具有ES6类方法的特权
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- Windows.Networking.EndpointPair构造函数参数
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- 大括号中的Javascript函数参数
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 将JSON字符串转换为函数参数
- eval()读取函数参数有多糟糕
- Javascript不能在一个命令中使用函数参数
- 函数参数在内部不可见,返回新的Promise(函数(resolve,reject).传递给被promise化的函数的
- ES6类构造函数参数
- 是否可以在javascript函数参数列表中调用多个函数