dem*_*123 7 javascript arrays json
假设我有一个像这样的JSON数组
[{"name":"Lenovo Thinkpad 41A4298","website":"google"},
{"name":"Lenovo Thinkpad 41A2222","website":"google"},
{"name":"Lenovo Thinkpad 41Awww33","website":"yahoo"},
{"name":"Lenovo Thinkpad 41A424448","website":"google"},
{"name":"Lenovo Thinkpad 41A429rr8","website":"ebay"},
{"name":"Lenovo Thinkpad 41A429ff8","website":"ebay"},
{"name":"Lenovo Thinkpad 41A429ss8","website":"rediff"},
{"name":"Lenovo Thinkpad 41A429sg8","website":"yahoo"}]
Run Code Online (Sandbox Code Playgroud)
我想获得一个值等于的所有names 的数组.websitegoogle
首先,过滤JSON阵列为只包含其中的条目website就是google,我有这样的:
var data_filter = data.filter( element => element.website =="google");
console.log(data_filter);
Run Code Online (Sandbox Code Playgroud)
得出以下结果:
[{"name":"Lenovo Thinkpad 41A4298","website":"google"},
{"name":"Lenovo Thinkpad 41A2222","website":"google"},
{"name":"Lenovo Thinkpad 41A424448","website":"google"}]
Run Code Online (Sandbox Code Playgroud)
接下来我需要做什么来获得name一个单独的数组.我试过这样做:
let new_array = [];
new_array.push(data_filter.body.name)
Run Code Online (Sandbox Code Playgroud)
这给了我一个未定义的错误name.我也尝试过:
new_array.push(data_filter.name)
new_array.push(data_filter.body[0].name)
Run Code Online (Sandbox Code Playgroud)
但这些方法都不起作用.我在这里错过了什么?
仅供参考 - JSON数据和过滤方法在此SO 帖子中提及- OP和答案.
你需要使用双等号来比较==而不是单一=.如果是单身,则更改(分配)element.website为"google".该表达式的结果是您设置的值"google",它是一个真值,因此所有元素都通过了测试filter().
var data = [{"name":"Lenovo Thinkpad 41A4298","website":"google"},
{"name":"Lenovo Thinkpad 41A2222","website":"google"},
{"name":"Lenovo Thinkpad 41Awww33","website":"yahoo"},
{"name":"Lenovo Thinkpad 41A424448","website":"google"},
{"name":"Lenovo Thinkpad 41A429rr8","website":"ebay"},
{"name":"Lenovo Thinkpad 41A429ff8","website":"ebay"},
{"name":"Lenovo Thinkpad 41A429ss8","website":"rediff"},
{"name":"Lenovo Thinkpad 41A429sg8","website":"yahoo"}];
var data_filter = data.filter( element => element.website == "google");
var names = data_filter.map(function (elem) {
return elem.name;
});
console.log(names);Run Code Online (Sandbox Code Playgroud)
要在过滤结果后获取名称,请使用map().
您的代码无效,因为您尝试访问body已过滤结果的属性.过滤结果包含原始结果的数组,但仅包含通过测试的条目.由于您的原始条目没有body属性,因此过滤后的结果也不会有.而且,你尝试过data_filter.body永远不存在的东西,因为它data_filter总是一个数组而数组没有body属性.
了解更多关于filter() 这里.
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |