Javascript 更有效的字符串创建方法

Javascript 更有效的字符串创建方法,javascript,node.js,Javascript,Node.js,我有以下对象,需要此字符串: product_name,@dummy1,@dummy2,seller_sku,@price,item_quantity,@dummy6,@dummy7,@dummy8,@dummy9,@dummy10,@dummy11,@dummy12,@dummy13,@dummy14,@dummy15,@dummy16,@dummy17,@dummy18,@dummy19,@dummy20,@dummy21,@dummy22,@dummy23,@dummy24,@dummy2

我有以下对象,需要此字符串:

product_name,@dummy1,@dummy2,seller_sku,@price,item_quantity,@dummy6,@dummy7,@dummy8,@dummy9,@dummy10,@dummy11,@dummy12,@dummy13,@dummy14,@dummy15,@dummy16,@dummy17,@dummy18,@dummy19,@dummy20,@dummy21,@dummy22,@dummy23,@dummy24,@dummy25,fulfillment_channel

对象和字符串(包括长度)可能会更改

我创建如下字符串(使用lodash):

函数表字符串(字段){
var obj=uz.invert(fields.fields);
obj.length=fields.countFields;
var值=Array.prototype.slice.apply(obj);
var arr=u2;.merge(新数组(fields.countFields),value).map(函数(val,i){
if(val=='price'| |!~values.indexOf(val)){
如果(val=‘价格’){
返回'@price';
}
返回'@dummy'+i;
}
返回val;
}); 
返回arr.join(',');
}
var first={
countFields:27,
字段:{
产品名称:0,
卖方库存单位:3,
价格:4,
项目数量:5,
新闻组频道:26
} 
}
log(表字符串(第一个))

我不知道这是否更简单,但您会在末尾得到一个字符串及其普通javascript

function tableString(fields){
    var reversedFields = {};
    for(var key in fields.fields){ // we swapped key and value
        reversedFields[fields.fields[key]] = key;
    }

    for(var i=0,x=fields.countFields-1,result = "";i<fields.countFields;i++){
        if(reversedFields[i]){
            result += (reversedFields[i] == 'price' ? '@price' : reversedFields[i]);
        } else {
            result += '@dummy' + i;
        }
        if(i < x){
            result += ",";
        }
    }

    return result;
}

var res = tableString({
    countFields: 27,
    fields:{
        product_name: 0,
        seller_sku: 3,
        price: 4,
        item_quantity: 5,
        fulfillment_channel: 26
    }
});

// result product_name,@dummy1,@dummy2,seller_sku,@price,item_quantity,@dummy6,@dummy7,@dummy8,@dummy9,@dummy10,@dummy11,@dummy12,@dummy13,@dummy14,@dummy15,@dummy16,@dummy17,@dummy18,@dummy19,@dummy20,@dummy21,@dummy22,@dummy23,@dummy24,@dummy25,fulfillment_channel
函数表字符串(字段){
var reversedFields={};
对于(varkey in fields.fields){//我们交换了键和值
反向字段[fields.fields[key]]=key;
}

对于(var i=0,x=fields.countFields-1,result=“”;i可以使用Array.reduce,这样就不需要在结尾处对其进行.join()连接。您有没有想法创建字符串而不需要先创建数组,或者创建一个值默认为
@dummy
n次的数组@KevinB@michael你的意思是
Array(10).join(“@dummy”).split(“”)
?@Vidul,我首先必须以某种方式分配对象的值。这将比我的更快。谢谢!
function tableString(fields){
    var reversedFields = {};
    for(var key in fields.fields){ // we swapped key and value
        reversedFields[fields.fields[key]] = key;
    }

    for(var i=0,x=fields.countFields-1,result = "";i<fields.countFields;i++){
        if(reversedFields[i]){
            result += (reversedFields[i] == 'price' ? '@price' : reversedFields[i]);
        } else {
            result += '@dummy' + i;
        }
        if(i < x){
            result += ",";
        }
    }

    return result;
}

var res = tableString({
    countFields: 27,
    fields:{
        product_name: 0,
        seller_sku: 3,
        price: 4,
        item_quantity: 5,
        fulfillment_channel: 26
    }
});

// result product_name,@dummy1,@dummy2,seller_sku,@price,item_quantity,@dummy6,@dummy7,@dummy8,@dummy9,@dummy10,@dummy11,@dummy12,@dummy13,@dummy14,@dummy15,@dummy16,@dummy17,@dummy18,@dummy19,@dummy20,@dummy21,@dummy22,@dummy23,@dummy24,@dummy25,fulfillment_channel