我有这个数组:
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);
关于javascript - 如何基于另一个对象数组创建一个对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43232612/