我有JSON数据:
users = [{
"name": "alex",
"id":123,
"surname":"xx",
tarriff: {
"id":1,
"name":"free"
}
},
{
"name": "tom",
"id":124,
"surname":"henry",
tarriff: {
"id":1,
"name":"free"
}
}
我需要过滤数据(删除"姓氏":" xx","姓氏":" henry"和smt else)
如果我使用tarriff.name
表示语法错误
$scope.userfilter = users.map(({name,id, tarriff.name}) => ({name, id, tariff_name}));
请帮我写一个正确的解决方案。
答案 0 :(得分:1)
您可以使用destructuring assignment并使用short hand properties构建新对象。
var users = [{ name: "alex", id: 123, surname: "xx", tarriff: { id: 1, name: "free" } }, { name: "tom", id: 124, surname: "henry", tarriff: { id: 1, name: "free" } }],
result = users.map(({ name, id, tarriff }) => ({ name, id, tarriff_name: tarriff.name }));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
您的users
变量是一个对象,而不是数组。我认为这只是一个错误,你想知道如何过滤数组。您应该使用filter这样的方法:
const users = [
{"name": "alex", "id":123, "surname":"xx", tarriff:{"id":1,"name":"free"}},
{"name": "emma", "id":123, "surname":"yy", tarriff:{"id":2,"name":"anna"}}
];
const criterium = "free";
const matchingUsers = users.filter(user => user.tarriff.name == criterium);
console.log (matchingUsers)
答案 2 :(得分:0)
很难理解你真正想要的是什么。但我猜你不是在谈论Array.filter,而是深深地映射。
语法错误是因为你正在解构错误。这是一个更好的方法:
$scope.userfilter = users.map( ({name, id, tarriff: { name: tarriff_name }}) => {
return {name, id, tariff_name};
});