[英]How to combine two json properties into one array
我有一個像這樣的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()
。 但是我認為輸出是錯誤的。 任何幫助是極大的贊賞。
在不使用jQuery的情況下做到這一點,並且忽略了No RC
和No RM
。
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
與'No RC'不同,則將其推入數組 RM_name
與'No RM'不同,則將其推入數組 功能選項(無Jquery)〜兩者都僅IE9 +,不帶poly-fill。
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];
}));
演示小提琴
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"
希望能幫助到你...
在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);
$.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];
}));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.