首页 > 解决方案 > 从 javascript 对象中省略索引

问题描述

我正在通过更改一些内容来修改 javascript 对象。当我重新创建它时,我得到每个密钥对的索引号。

"0":{...},"1":{...},

如何删除/省略这些 0、1、2、3、4 数字的创建?这样输出看起来就是:

{...},{...},

var overlappedRanges = [{
  start: '11/19/2019',
  end: '11/20/2019'
}, {
  start: '11/01/2019',
  end: '11/18/2019'
}, {
  start: '11/14/2019',
  end: '11/19/2019'
}, {
  start: '11/17/2019',
  end: '11/21/2019'
}, {
  start: '11/12/2019',
  end: '11/23/2019'
}, {
  start: '11/18/2019',
  end: '11/24/2019'
}];


var final = {};
for (var key in overlappedRanges){
final[key] = {"startmod" : overlappedRanges[key]["start"],
"endmod" : overlappedRanges[key]["end"]};
}
console.log(JSON.stringify(final));



$('#overlapped').text(JSON.stringify(final));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="overlapped" style="color: red;"></span>
<br>
<span id="notOverlapped" style="color: green;"></span>

标签: javascriptjqueryarrays

解决方案


让外部结构是一个数组而不是一个对象:

var overlappedRanges = [{
  start: '11/19/2019',
  end: '11/20/2019'
}, {
  start: '11/01/2019',
  end: '11/18/2019'
}, {
  start: '11/14/2019',
  end: '11/19/2019'
}, {
  start: '11/17/2019',
  end: '11/21/2019'
}, {
  start: '11/12/2019',
  end: '11/23/2019'
}, {
  start: '11/18/2019',
  end: '11/24/2019'
}];

const final = overlappedRanges.map(({ start, end }) => ({
  startmod: start,
  endmod: end
}));
console.log(JSON.stringify(final));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="overlapped" style="color: red;"></span>
<br>
<span id="notOverlapped" style="color: green;"></span>

(另外,用于.map将一个数组转换为另一个)


推荐阅读