连接字符串的正确方法是什么?
var d=getEntity({"Division":
{
"oddTerms":
[
{
"entity": "Sunshine",
"Sunshine": [
{
"count": 2,
"entity": "Dodge"
},
{
"count": 1,
"entity": "Dodge Avenger"
},
]
}
]
}});
我想遍历json字符串和实体名称道奇和道奇复仇者。香港专业教育学院使用下面的方法连接字符串的正确方法是什么?
for (var k in h.Division.oddTerms)
{
s=h.Division.oddTerms[k].entity;
h.Division.oddTerms[k].+s+.entity;
}
但我认为这不是它的正确的收作方法初探来连接,因为它不wrking ..任何人都知道正确的格式?
oddTerms
是一个数组,而不是一个对象。对于JavaScript数组,你需要使用一个for循环与反,而不是通过元素迭代:
var concatedString = '';
for (var k=0; k<h.Division.oddTerms.length;k++)
{
// Get the name of the entity we want to collect the entity terms of
var entityName =h.Division.oddTerms[k].entity;
// iterate through all the instances of each entity
for(var j=0; j<h.Division.oddTerms[k][entityName].length;j++){
concatedString += h.Division.oddTerms[k][entityName][j].entity;
}
}
那不是问题,因为(var k in h.Division .oddTerms)会像在PHP中的foreach循环一样,问题在于我将值Sunshine添加到'h.Division.oddTerms [k]。+ s + .entity'的方式,' – user1371896
是的,编辑代码 – chiborg
var entityName = "",
arrTerms = [],
outputTemplate = '{"%entityName":[%terms]}',
h = {
"Division":
{
"oddTerms":
[
{
"entity": "Sunshine",
"Sunshine": [
{
"count": 2,
"entity": "Dodge"
},
{
"count": 1,
"entity": "Dodge Avenger"
},
]
}
]
}
};
for (var i = 0; i < h.Division.oddTerms.length; i++)
{
entityName=h.Division.oddTerms[i].entity; // "Sunshine"
terms = h.Division.oddTerms[i][entityName];
for (var j = 0; j < terms.length; j++) {
arrTerms.push('"' + terms[j].entity + '"');
}
}
// This will give you '{"Sunshine":["Dodge","Dodge Avenger"]}':
console.log(outputTemplate.replace('%entityName', entityName).replace('%terms', arrTerms.join(",")));
编辑:
只是多一些这一点。
如果您不习惯使用JS和对象和数组“文字”,JSON可能会有点混乱。在JS中,您可以通过多种方式定义对象和数组,但最简单的(也是许多开发人员最喜欢的)就是使用这些文字。
下面是一个对象的例子:
var myObj = {
"some prop":"some value",
"anotherProp":"another value"
}
你可以看一下的myObj
成员在几个方面:
myObj.anotherProp
// “其他值”
myObj["some prop"]
//你有如果属性名称中有空格,则使用此表单
要循环访问数组的内容,请使用第二种形式。例如,这是不行的:
for (var strPropName in myObj) {
console.log(myObj.strPropName); // This won't work!
}
相反,你应该循环通过这样的性质:
for (var strPropName in myObj) {
if (myObj.hasOwnProperty(strPropName)) {
console.log(myObj[strPropName]);
}
}
的if
块是可选的,但你会避免潜在的问题,如果你总是在你的代码中包含这个。这也是一些验证器所要求的。
现在,这里是一个数组的例子:
var myArray = ["some value", "anotherValue"];
你用数字索引访问这些:
myArray[0] // "some value"
myArray[1] // "anotherValue"
myArray[2] // undefined
,您可以循环通过他们:
for (var index = 0; index < myArray.length; index++) {
console.log(myArray[index]);
}
你可以在阵列中嵌套对象:
myArray = [{},{},{}];
,你可以在对象中嵌套数组:
myObject = {"arr1":[], "arr2":[], "arr3":[]}
这将做wrk,bt我想了解更多关于字符串连接的信息... – user1371896
我会在这里添加更多以帮助您。 – Andrew
什么是你希望在你的循环做最后一行? – Andrew
我会提醒它,例如.. bt我应该得到实体道奇和道奇复仇者的价值提醒... – user1371896
s将具有价值阳光从最后一行,并在最后一行,它应该附加价值阳光和获取实体名称。我想这个如果字符串包含多个元素,它会比jst阳光更多的值.. – user1371896