如何基于另一个对象数组创建一个对象数组?
问题描述:
我有这个数组:如何基于另一个对象数组创建一个对象数组?
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.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 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 arr2 =[];
for(var i in arr1){
var obj= {};
obj[arr1[i]['user']] = arr1[i]['liked'];
arr2.push(obj)
}
答
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=[];
arr1.forEach(function(obj)
{
var temp=new Object();
temp[obj.user]=obj.liked;
arr2.push(temp);
});
我想这是你想要的
我在我的问题犯了一个错误!编辑!对不起 – Ted