簡體   English   中英

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);

它不會控制台日志“大小”,但不會用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的答案逐步構建對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM