迭代javascript对象并根据条件输出某些信息
我有一个对象数组,我想从中获取值:迭代javascript对象并根据条件输出某些信息,javascript,jquery,arrays,object,iteration,Javascript,Jquery,Arrays,Object,Iteration,我有一个对象数组,我想从中获取值: lastChanceSeats: Object assignedSeats: Array[6] 0: Object SeatId: "29A" passengerName: "Mr test1 test1" sectorSequence: 1 1: Object SeatId: "22A" passengerN
lastChanceSeats: Object
assignedSeats: Array[6]
0: Object
SeatId: "29A"
passengerName: "Mr test1 test1"
sectorSequence: 1
1: Object
SeatId: "22A"
passengerName: "Mr test1 test1"
sectorSequence: 2
2: Object
SeatId: "29B"
passengerName: "Mrs test2 test2"
sectorSequence: 1
3: Object
SeatId: "22B"
passengerName: "Mrs test2 test2"
sectorSequence: 2
4: Object
SeatId: "29C"
passengerName: "Master test3 test3"
sectorSequence: 1
5: Object
SeatId: "22C"
passengerName: "Master test3 test3"
sectorSequence: 2
我想以以下格式呈现数据:
- 第一{passengerName}
- {sectorSequence:1}+{SeatId}
- {sectorSequence:2}+{SeatId}
…然后乘客2号、乘客3号等也一样。使用一个简单的模板并循环遍历每个项目以生成输出:
var data=[
{
"SeatId": "29A",
"passengerName": "Mr test1 test1",
"sectorSequence": 1
},
{
"SeatId": "22A",
"passengerName": "Mr test1 test1",
"sectorSequence": 2
},
{
"SeatId": "29B",
"passengerName": "Mrs test2 test2",
"sectorSequence": 1
}
]
function template(ob, str){
return str.replace(/{([\w\s.\$]+?)}/g,
function(j,a){ return ob[a]||""; } );
}
strTemplate="First {passengerName} {sectorSequence} + {SeatId}";
out=$(data).map(function(i,item){ return template(item, strTemplate)}).toArray().join("\n");
alert(out);
/* result:
First Mr test1 test1 1 + 29A
First Mr test1 test1 2 + 22A
First Mrs test2 test2 1 + 29B */
对象属性上的有序迭代是不可能的 你可以这样做:
var data=[
{
"SeatId": "29A",
"passengerName": "Mr test1 test1",
"sectorSequence": 1
},
{
"SeatId": "22A",
"passengerName": "Mr test1 test1",
"sectorSequence": 2
},
{
"SeatId": "29B",
"passengerName": "Mrs test2 test2",
"sectorSequence": 1
}
],
orderedObjectProps = ['SeatId', 'passengerName', 'sectorSequence'],
dataLength = data.length,
propsLength = orderedObjectProps.length,
i = 0;
for(i; i < dataLength; i++) {
var obj = data[i],
j = 0;
for(j; j < propsLength; j++) {
var propName = orderedObjectProps[j],
propValue = obj[propName];
console.log(propValue);
}
}
var数据=[
{
“SeatId”:“29A”,
“乘客姓名”:“test1先生test1”,
“部门顺序”:1
},
{
“SeatId”:“22A”,
“乘客姓名”:“test1先生test1”,
“部门顺序”:2
},
{
“SeatId”:“29B”,
“乘客姓名”:“test2夫人test2”,
“部门顺序”:1
}
],
orderedObjectProps=['SeatId','passengerName','sectorSequence'],
dataLength=data.length,
propsLength=orderedObjectProps.length,
i=0;
对于(i;i
上面的代码将按您想要的顺序打印值。使用与上面答案中相同的数据,您可以尝试此代码段
var数据=[
{
“SeatId”:“29A”,
“乘客姓名”:“test1先生test1”,
“部门顺序”:1
},
{
“SeatId”:“22A”,
“乘客姓名”:“test1先生test1”,
“部门顺序”:2
},
{
“SeatId”:“29B”,
“乘客姓名”:“test2夫人test2”,
“部门顺序”:1
}
]
功能测试迭代(数据){
data.forEach(e=>{
log(`SeatId:${e.SeatId}`);
log(`passengerName:${e.passengerName}`);
log(`sectorSequence:${e.sectorSequence}`);
})
}
功能测试迭代2(数据){
data.forEach(e=>{
用于(e中的var prop){
if(Object.prototype.hasOwnProperty.call(e,prop)){
log(`${prop}:${e[prop]}`);
}
}
})
}
测试迭代2(数据)
您应该使用html
来实现这一点。您好,对不起,我正在研究如何迭代数组以按显示的方式提取数据。感谢上述内容,但是我正在尝试获取第一位乘客的姓名并在下面列出他们给定的座位号,然后是第二位乘客的姓名和座位号,等等,而不是重新排列属性。我需要查看每个对象,评估其中任何一个对象的名称是否相同,并在下面列出适用的座位。。。这有意义吗?!?