我有这样的json数据:
var data = [{
"RM_Name": "Cloud Strife",
"Division": "Avalanche",
"RM_Phone": "No Phone",
"RC_Name": "No RM",
"RC_Phone": "No Phone",
"States_Covered": "Midgar,Nibelheim"
}, {
"RM_Name": "Clint Eastwood",
"Division": "Hollywood",
"RM_Phone": "No Phone",
"RC_Name": "No RC",
"RC_Phone": "No Phone",
"States_Covered": "Gran Torino"
}, {
"RM_Name": "Barret Wallace",
"Division": "Avalanche",
"RM_Phone": "No Phone",
"RC_Name": "Barry Allen",
"RC_Phone": "No Phone",
"States_Covered": "North Corel"
}, {
"RM_Name": "Tifa Lockheart",
"Division": "Avalanche",
"RM_Phone": "No Phone",
"RC_Name": "Aeris Gainsborough",
"RC_Phone": "No Phone",
"States_Covered": "Sector 7"
}];
现在我想创建一个由RM_Name和RC_Name组成的新数组,这样输出就像这样:
[Cloud Strife,Clint Eastwood,Barret Wallace,Barry Allen,Tifa Lockheart,Aeris Gainsborough]
我该怎么做?我尝试过使用$.merge()
。但我认为输出是错误的。非常感谢任何帮助。
答案 0 :(得分:3)
使用jQuery .each()
迭代JSON。试试这个:
var dataArray = [];
$.each(data, function(i, v){
dataArray.push(v.RM_Name);
if(v.RC_Name !="No RC")
dataArray.push(v.RC_Name);
});
console.log(dataArray);
答案 1 :(得分:2)
不使用jQuery而忽略No RC
和No RM
。
的 Demo Fiddle 强>
var result = [];
for(var i = 0, l = data.length; i < l; ++i)
{
if(data[i].RM_Name !== 'No RM')
result.push(data[i].RM_Name);
if(data[i].RC_Name !== 'No RC')
result.push(data[i].RC_Name);
}
console.log(result);
这是做什么的:
RC_Name
不同于&#39;否RC&#39;将它推入数组RM_name
不同于“没有RM&#39;将它推入数组答案 2 :(得分:2)
功能选项(无Jquery)〜只有IE9 +,没有多边形填充。
var ar = data.reduce(function(previous, current)
{
previous.push(current.RM_Name, current.RC_Name);
return previous;
}, []);
或(虽然不能过度阅读)
var ar = Array.prototype.concat.apply([], data.map(function(row){
return [row.RM_Name, row.RC_Name];
}));
答案 3 :(得分:2)
<强> Demo Fiddle 强>
jQuery
var toShow = new Array();
$.each(data,function(i,item){
toShow.push(item.RM_Name);
if(item.RC_Name !="No RC")
toShow.push(item.RC_Name);
});
它甚至会忽略每个"RC_Name":"No RC"
希望它有所帮助...
答案 4 :(得分:1)
在jquery中使用.each()
var name = [];
$.each(data, function( index, value ) {
name.push(value.RM_Name);
if(value.RC_Name !="No RC")
name.push(value.RC_Name);
});
console.log(name);
答案 5 :(得分:0)
$.map
和$.grep
的另一种可能解决方案:
[].concat.apply($.map(data, function(o) {
return $.grep([o.RM_Name, o.RC_Name], function(v) {
return v !== 'No RM' && v !== 'No RC';
});
}));
如果您不需要按值过滤属性,则可以省略$.grep
部分:
[].concat.apply($.map(data, function(o) {
return [o.RM_Name, o.RC_Name];
}));