更有效的字符串创建方式
More efficient way of string creation
我有以下对象,需要这个字符串:
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
{
countFields: 27,
fields:
{ product_name: 0,
seller_sku: 3,
price: 4,
item_quantity: 5,
fulfillment_channel: 26
}
}
对象和字符串(包括长度)可能会改变。
我像这样创建字符串(使用lodash):function tableString(fields){
var obj = _.invert(fields.fields);
obj.length = fields.countFields;
var values = Array.prototype.slice.apply( obj );
var arr = _.merge(new Array(fields.countFields),values).map(function(val,i){
if (val == 'price' || !~values.indexOf(val)) {
if (val == 'price') {
return '@price';
}
return '@dummy' + i;
}
return val;
});
return arr.join(',');
}
var first = {
countFields: 27,
fields: {
product_name: 0,
seller_sku: 3,
price: 4,
item_quantity: 5,
fulfillment_channel: 26
}
}
console.log(tableString(first));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js"></script>
我想避免最后的map()
/array函数。有人找到一个更简单的方法来创建上面的字符串从对象?
我不知道这是否更容易,但你在最后得到一个字符串和它的香草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
相关文章:
- 如何创建更好的方式来维护基于我的代码访问的最后一个页面
- 如何在jQuery中以有效的方式创建链接
- 什么'是在HTML5画布中创建关键事件的最佳方式
- 在jQuery中,创建和附加元素的方式更快
- 在 Chrome 扩展程序中创建自定义事件的最惯用方式
- 在 Google Apps 脚本中,无法以编程方式创建触发器以从 onEdit 触发器发送电子邮件
- 如何在Chrome 41中以编程方式创建TouchEvent
- 创建一个键盘快捷方式来启动Google Chrome扩展
- 创建javascript对象的最佳方式
- 在创建 toLowerCase 函数时,一种方式比另一种方式更好
- Spring MVC与Google图表,创建javascript数据表的最佳方式是什么
- 我如何使用JavaScript(jQuery)在HTML中以传统方式创建元素的副本作为新元素
- 以编程方式创建的“喜欢按钮”会泄漏大量内存
- 使用 jQuery 创建嵌套 HTML 元素的最佳方式
- 在 javascript 中创建函数的不同方式
- 如何在javascript中以编程方式创建新的Google Analytics会话/访问者
- 使用 Node.js 创建反向代理的更优雅的方式
- 为什么$(this)的工作方式不同取决于回调的创建方式
- 更有效的字符串创建方式
- 为什么这样的对象创建方式在Java脚本中被使用