Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中,以空格分隔的字符串形式连接对象的最简单方法是什么_Javascript - Fatal编程技术网

在Javascript中,以空格分隔的字符串形式连接对象的最简单方法是什么

在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

全部:

我想从JS对象构建一个字符串(类似于构建toString方法,但类似于运算符重载),例如:

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