在Javascript中,以空格分隔的字符串形式连接对象的最简单方法是什么
全部: 我想从JS对象构建一个字符串(类似于构建toString方法,但类似于运算符重载),例如:在Javascript中,以空格分隔的字符串形式连接对象的最简单方法是什么,javascript,Javascript,全部: 我想从JS对象构建一个字符串(类似于构建toString方法,但类似于运算符重载),例如: var info = {name:"username",age:20}; var fmtinfo = info.join("||"); fmtinfo将是一个具有以下格式的字符串: "name(username)||age(20)" 我想知道是否有人能给我一个简单的方法来做到这一点 谢谢您可以使用语句和助手数组: var info={name:“username”,年龄:20}; var h
var info = {name:"username",age:20};
var fmtinfo = info.join("||");
fmtinfo将是一个具有以下格式的字符串:
"name(username)||age(20)"
我想知道是否有人能给我一个简单的方法来做到这一点
谢谢您可以使用语句和助手数组:
var info={name:“username”,年龄:20};
var helperArray=[];
用于(var输入信息){
if(信息hasOwnProperty(键)){
helperArray.push(键+'('+info[key]+'));
}
}
警报(helperArray.join(“| |”)代码>
然后你可以做:
var info = {name:"username",age:20};
info.fancyString();
// outputs: "name(username)||age(20)"
您可以迭代对象的键以获得键名及其对应的值。虽然不是非常优雅,但由于所需的字符串格式并不常见,因此需要做一些工作
var info = {name:"username",age:20};
var keys = Object.keys(info);
var returnVal = ""
for(var i = 0; i < keys.length; i++) {
if(returnVal.length > 0)
returnVal += "||";
returnVal += keys[i] + "(" + info[keys[i]] + ")";
}
alert(returnVal)
var info={name:“username”,年龄:20};
var keys=Object.keys(信息);
var returnVal=“”
对于(变量i=0;i0)
returnVal+=“||”;
returnVal+=keys[i]+”(“+info[keys[i]]+”);
}
警报(返回值)
这里是一个解决方案的JS摘要:为了避免任何显式迭代,您可以使用Object.keys
和map
将每个键转换为相应的条目,然后简单地将它们连接在一起:
function fancyString(obj) {
return Object.keys(obj).map(function (k) {
return "" + k + "(" + obj[k] + ")";
}).join("||");
}
var foo = {name: "username", age: 20};
console.log(fancyString(foo));
要解释此操作的工作原理,请执行以下操作:
调用返回对象自身可枚举键的数组,有效地结合了(f in o)
的和o.hasOwnProperty()
检查<代码>对象。键
得到了除IE9之外的所有东西的良好支持(尽管多边形填充并不复杂)
使用所需的字符串格式,通过转换键数组。这非常简单,但不要让obj[k]
调用其.toString()
方法(如果可用)将其转换为字符串。这允许对自定义对象进行出色的处理,因为您只需在每个对象上定义一个toString
方法,它就会被VM拾取。同样,IE9和更高版本支持这一点,但多边形填充并不重要
最后,我们将结果字符串与连接起来,这将确保我们不会将分隔符附加到末尾或类似的内容。所有浏览器都支持这一点
出于好奇,ES6的等效标准是:
let fancyString = o => Object.keys(o).map(k => "" + k + "(" + o[k] + ")").join("||");
这花了一段时间,但我可能已经让它在两个现有的Stackoverflow答案的帮助下按预期工作:和。我希望这有帮助:-)
Object.prototype.join=函数连接(param){
var helperArray=[]
for(此字段中的var键){
//检查功能是否未打印->连接:功能
if(typeof(此[键]!=“函数”)
helperArray.push(键+”(“+此[键]+”)
}
返回helperArray.join(参数);
}
变量信息={
名称:“用户名”,
年龄:20
};
console.log(info.join(“| |”);
console.log(info.join(“”));
console.log(info.join('%')
所以你想定义信息。join
?@minitech欢迎任何方法,只要简单易用。这可能会更干净,因为没有类型的函数join(object,delimiter){…}
。谢谢包装!这是最好的(ES5)方式。
let fancyString = o => Object.keys(o).map(k => "" + k + "(" + o[k] + ")").join("||");