[英]how to create an array of objects based on another array of objects?
我有这个数组:
var arr1 = [
{"user":"dan","liked":"yes","age":"22"},
{"user":"sarah","liked":"no","age":"21"},
{"user":"john","liked":"yes","age":"23"},
];
我想创建该数组的新(子)数组,仅包含用户的喜好。
所以它看起来像这样:
var arr2 = [
{"dan":"yes"},
{"sarah":"no"},
{"john":"yes"},
];
我试过:
var arr2 =[];
for(var i in arr1){
arr2.push({[i[user]]:i[liked]});
}
它需要调整,想法?
var arr1 = [ {"user":"dan","liked":"yes","age":"22"}, {"user":"sarah","liked":"no","age":"21"}, {"user":"john","liked":"yes","age":"23"}, ]; var arr2 = arr1.map(v => ({ user: v.user, liked: v.liked })); console.log(arr2);
对于您的更新,虽然可以使用array.map
完成, array.map
我建议您改用键值对结构。 你需要array.reduce
。
var arr1 = [ {"user":"dan","liked":"yes","age":"22"}, {"user":"sarah","liked":"no","age":"21"}, {"user":"john","liked":"yes","age":"23"}, ]; var arr2 = arr1.reduce((c, v) => (c[v.user] = v.liked, c) , {}); console.log(arr2);
根据您的编辑:
arr1 = arr1.map(function(item){ return{ [item.user]: item.liked } });
var arr1 = [ {"user":"dan","liked":"yes","age":"22"}, {"user":"sarah","liked":"no","age":"21"}, {"user":"john","liked":"yes","age":"23"}, ]; var res = arr1.map(function(o) { var r = {}; r[o.user] = o.liked; return r; }); console.log(res);
或者在最近的 ECMAScript 版本中:
var arr1 = [ {"user":"dan","liked":"yes","age":"22"}, {"user":"sarah","liked":"no","age":"21"}, {"user":"john","liked":"yes","age":"23"}, ]; var res = arr1.map(o => ( { [o.user]: o.liked } )); console.log(res);
尝试这个
var arr2 =[];
for(var i in arr1){
var obj= {};
obj[arr1[i]['user']] = arr1[i]['liked'];
arr2.push(obj)
}
var arr2=[];
arr1.forEach(function(obj)
{
var temp=new Object();
temp[obj.user]=obj.liked;
arr2.push(temp);
});
我想这就是你想要的
您可以将解构的所需属性映射到新对象。
var array1 = [{ user: "dan", liked: "yes", age: "22" }, { user: "sarah", liked: "no", age: "21" }, { user: "john", liked: "yes", age: "23" }], array2 = array1.map(({ user, liked }) => ({ [user]: liked })); console.log(array2);
ES5
var array1 = [{ user: "dan", liked: "yes", age: "22" }, { user: "sarah", liked: "no", age: "21" }, { user: "john", liked: "yes", age: "23" }], array2 = array1.map(function (o) { var temp = {}; temp[o.user] = o.liked; return temp; }); console.log(array2);
如果它是一个对象数组
var arr1=[{},{},..]
你必须遍历对象属性,所以你需要这个
var arr2 =[]
arr1.forEach(element => {
var temp = new Object();
for (var name in element) {
temp[name] = element[name]
}
arr2 .push(temp)
});
现在你有 arr2 作为不同于 arr1 的另一个对象
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.