繁体   English   中英

如何在同一JSON数组中复制和添加元素

[英]How to copy and add element within the same JSON array

美好的一天,我正在一个Ionic 3项目中,其中响应http数据是这样的JSON数组格式(从控制台):Array(5)

0: {record_id: "1", local_TimeStamp: "16:00:00", country: "USA"}
1: {record_id: "2", local_TimeStamp: "17:00:00", country: "Japan"}
2: {record_id: "3", local_TimeStamp: "17:00:00", country: "Korea"}
3: {record_id: "4", local_TimeStamp: "15:00:00", country: "Thailand"}
4: {record_id: "5", local_TimeStamp: "16:00:00", country: "China"}

如何(1)复制“ local_TimeStamp”元素和(2)追加到同一数组索引,以便新的JSON数组如下所示:

0: {record_id: "1", local_TimeStamp: "16:00:00", locat_DateTimeStamp: "03-20- 
2018 16:00:00, country: "USA"}

我试图循环并复制local_TimeStamp元素并将其附加为:

var newCountryArray = JSON.parse(countryArray);
newCountryArray.forEach( function( item ) {
    var localtime = item.local_TimeStamp;
    var new_obj = {'local_DateTimeStamp': '03182018'+localtime };
    newCountryArray.item.push( new_obj );
});

jsonCountryArray:any = [];
jsonCountryArray = JSON.stringify(newCountryArray);

但是上面的代码不起作用。 请帮忙!

谢谢。 荷里活

您无需创建新对象。 只需将新属性附加到迭代器即可。

var newCountryArray = JSON.parse(countryArray);
newCountryArray.forEach(function(item) {
    var localtime = item.local_TimeStamp;
    item.local_DateTimeStamp = '03182018'+localtime; //<-- add property
});

使用.map和对象传播:

 var countryArray = JSON.stringify([ {record_id: "1", local_TimeStamp: "16:00:00", country: "USA"}, {record_id: "2", local_TimeStamp: "17:00:00", country: "Japan"}, {record_id: "3", local_TimeStamp: "17:00:00", country: "Korea"}, {record_id: "4", local_TimeStamp: "15:00:00", country: "Thailand"}, {record_id: "5", local_TimeStamp: "16:00:00", country: "China"} ]) var json = JSON.stringify( JSON .parse(countryArray) .map(entry => ({ ...entry, local_DateTimeStamp: '03182018' + entry.local_TimeStamp })) ) console.log('Json', json) 

尝试这个

var newCountryArray = JSON.parse(countryArray);
newCountryArray.forEach( function( item ) {
var localtime = item.local_TimeStamp;
items['local_DateTimeStamp'] = '03182018'+localtime
//assigns string to property local_DateTimeStamp on each iteration
});

希望这可以帮助!

您可以使用Array的filter()尝试以下操作:

 var newCountryArray = [{record_id: "1", local_TimeStamp: "16:00:00", country: "USA"}, {record_id: "1", local_TimeStamp: "17:00:00", country: "Japan"}, {record_id: "1", local_TimeStamp: "17:00:00", country: "Korea"}, {record_id: "1", local_TimeStamp: "15:00:00", country: "Thailand"}, {record_id: "5", local_TimeStamp: "16:00:00", country: "China"}]; newCountryArray = newCountryArray.filter( function( item ) { return item.local_DateTimeStamp = '03182018 ' + item.local_TimeStamp; }); console.log(newCountryArray) 

这是一种奇怪的解决方法

 let arr = [ {record_id: "1", local_TimeStamp: "16:00:00", country: "USA"}, {record_id: "2", local_TimeStamp: "17:00:00", country: "Japan"}, {record_id: "3", local_TimeStamp: "17:00:00", country: "Korea"}, {record_id: "4", local_TimeStamp: "15:00:00", country: "Thailand"}, {record_id: "5", local_TimeStamp: "16:00:00", country: "China"} ] let newArr = Array(arr.length).fill(0).map((v, i) => Object.assign({}, arr[i], { local_DateTimeStamp: '03182018 '+arr[i].local_TimeStamp })); console.log(newArr); 

 const array= [ {record_id: "1", local_TimeStamp: "16:00:00", country: "USA"}, {record_id: "1", local_TimeStamp: "17:00:00", country: "Japan"}, {record_id: "1", local_TimeStamp: "17:00:00", country: "Korea"}, {record_id: "1", local_TimeStamp: "15:00:00", country: "Thailand"}, {record_id: "1", local_TimeStamp: "16:00:00", country: "China"} ] const addLocalDate = item => { item.locat_DateTimeStamp = '03182018 '+item.local_TimeStamp; return item; } const newArray = array.map(el => addLocalDate(el)); console.log(newArray); //0: {record_id: "1", local_TimeStamp: "16:00:00", locat_DateTimeStamp: "03-20- 2018 16:00:00, country: "USA"} 

尝试这个

const initialCountryArray = [ 
  {record_id: "1", local_TimeStamp: "16:00:00", country: "USA"},
  {record_id: "2", local_TimeStamp: "17:00:00", country: "Japan"},
  {record_id: "3", local_TimeStamp: "17:00:00", country: "Korea"},
  {record_id: "4", local_TimeStamp: "15:00:00", country: "Thailand"},
  {record_id: "5", local_TimeStamp: "16:00:00", country: "China"} 
];

const newCountryArray = initialCountryArray.map(country => {
  return { ...country, 'local_DateTimeStamp': '03182018'+country.local_TimeStamp};
});

console.log(newCountryArray);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM