将对象数组转换为字符串数组?

时间:2015-08-14 05:13:10

标签: javascript jquery arrays angularjs

我有一个像这样的对象数组 -

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中获得这样的输出。

任何其他网络使用的语言都已获得批准。

8 个答案:

答案 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函数,即使你可以说这在技术上是一种范式缩减。

output

答案 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" ]

你可以简单地使用

普通的旧Javascript:

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库

如果你只需要一个对象属性的 一个 的值列表,那么最简单的方法就是使用underscore.js库。

var string_person = _.pluck(person, 'name');

http://underscorejs.org/#pluck

答案 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
    }
}