我有一个像这样的对象数组 -
var person = [
{name: 'saprsh', age: 22, address:'XYZ'},
{name: 'Ankur', age: 23},
{name: 'Richa', age:25, adddress:'ABX', email:'abc@xyz.co'}
];
现在我想要这样的输出
var string_person = [{sparsh22XYZ},{ankur23},{Richa25ABXabc@xyz.co}];
是他们以任何方式在javascript,jquery,Angular.js中获得这样的输出。
任何其他网络使用的语言都已获得批准。
答案 0 :(得分:3)
查看此jsfiddle。您会看到Iterable
和__inter__()
都使用了,两者都有相同的结果。
这是经典的__next__()
:
Array.prototype.reduce
以上使用Array.prototype.map
。
换句话说,当您希望将对象或数组的所有属性“缩减”为某些内容时,在这种情况下,最具语义性的选项可能是reduce
。
但是,var people = person.reduce(function(agg, p) {
return agg.concat([p.name + p.age + p.address]);
}, []);
也可以非常干净地完成这项任务:
Array.prototype.reduce
现在,这是可读性/复杂性与语义之间的争论。
为了限制偶然的复杂性(以可读性的形式),我可能会选择Array.prototype.reduce
函数,即使你可以说这在技术上是一种范式缩减。
答案 1 :(得分:2)
我认为它会对你有所帮助。
var person = [
{name: 'saprsh', age: 22, address:'XYZ'},
{name: 'Ankur', age: 23, address:'ABC'}
];
var stringarray=[];
// $.each(person, function (i, d) {
// stringarray.push(d.name + d.age + d.address);
// });
//for(var i = 0; i < person.length; i++){
// stringarray.push(person[i].name + person[i].age + person[i].address);
//}
var stringarray = person.map(function(p) {
return p.name + p.age + p.address;
});
console.log(stringarray);
结果:[&#34; saprsh22XYZ&#34;,&#34; Ankur23ABC&#34;]
Plz试试这个。
答案 2 :(得分:2)
试试这个,这个方法适合不同的对象名称,它会很好用。
var person = [
{name: 'saprsh', age: 22, address:'XYZ'},
{name: 'Ankur', age: 23},
{name: 'Richa', age:25, adddress:'ABX', email:'abc@xyz.co'}
];
var result = person.map(function(p){ return Object.keys(p).map(function(k){return p[k]}).join("");})
答案 3 :(得分:1)
我假设你想要一个字符串数组。
[{sparsh22XYZ},{ankur23ABC}]
不这样的数组。
如果你想要
[ "sparsh22XYZ", "ankur23ABC" ]
你可以简单地使用
var string_person = [];
for (var i = 0; i < person.length; i++) {
string_person.push(person[i].name+person[i].age+person[i].address);
}
如果你只需要一个对象属性的 一个 的值列表,那么最简单的方法就是使用underscore.js库。
var string_person = _.pluck(person, 'name');
答案 4 :(得分:1)
你可以这样做。
Array.prototype.map
答案 5 :(得分:1)
使用任意数量的参数在任何对象数组上调用以下函数,它将返回您想要的内容。
function getStringArray(array){
var resultArray = [];
for (i = 0; i < array.length; i++) {
var result = "";
var keysArray = Object.keys(array[i]).sort()
for(j = 0; j < keysArray.length; j++){
result = result+array[i][keysArray[j]];
}
resultArray.push(result);
}
return resultArray;
}
答案 6 :(得分:0)
var string_person = [];
for(var i = 0; i < person.length; i++){
string_person.push(person[i].name + person[i].age + person[i].address);
}
<强>更新强>
您也可以使用下划线:
var string_person = _.map(person, function(p){return p.name + p.age + p.address;});
答案 7 :(得分:0)
我想你想把对象的所有成员加入一个字符串。有两种方法可以做到这一点:
this.CreateHandle();
这种技术的问题是,我不能保证它会按照你想要的顺序加入成员的值。它应该按照成员的定义顺序加入它们。
无论如何,此解决方案可以正常工作,但仅限于您的情况:
// iterate through the array of persons
for (var index = 0; index < person.length; index++) {
var obj = person[index]; // save the object temporally
person[index] = ''; // place an empty string at the index of the object
// iterate through all members of the object using the "in"-operator
for (var member in obj) {
person[index] += obj[member]; // add the value of the member to the string
}
}