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);
它确实是控制台日志 "size",但它不会用 formattedSize 数组中的单词大小替换单词特征。这是我在服务器控制台中得到的:
size
[ { characteristic: 's' },{ characteristic: 'm' },{ characteristic: 'l' } ]
如何让它用数组中的大小替换特征?这是我想要的输出:
size
[ { size: 's' },{ size: 'm' },{ size: 'l' } ]
我希望能够重用具有其他特征的 formatArr 函数。
您应该使用 bracket notation 作为变量 属性 名称:
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 的回答逐步构建一个对象。
我正在尝试 运行 我的 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);
它确实是控制台日志 "size",但它不会用 formattedSize 数组中的单词大小替换单词特征。这是我在服务器控制台中得到的:
size
[ { characteristic: 's' },{ characteristic: 'm' },{ characteristic: 'l' } ]
如何让它用数组中的大小替换特征?这是我想要的输出:
size
[ { size: 's' },{ size: 'm' },{ size: 'l' } ]
我希望能够重用具有其他特征的 formatArr 函数。
您应该使用 bracket notation 作为变量 属性 名称:
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 的回答逐步构建一个对象。