javascript - 从对象中动态删除多个键/值对

标签 javascript arrays json object key-value

假设我有一个对象数组。有一些我不想要的键/值。删除一个键/值对的传统方法是这样使用delete:

for (var i = 0; i < tracks.length; i++) {
  delete tracks[i]["currency"];
  ...
}

我拉入的对象可能有 30 多对。有没有一种方法可以说明我想要哪些对并删除所有其他对?因此,例如,在这个对象数组中,我只想保留 trackNamekindprice

var tracks = [{
    trackNumber: "01",
    trackName: "Track 1",
    trackDuration: "5:35",
    kind: "song",
    currency: "USD",
    price: 1.29
}, {
    trackNumber: "02",
    trackName: "Track 2",
    trackDuration: "5:15",
    kind: "song",
    currency: "USD",
    price: 1.29
}, {
    trackNumber: "03",
    trackName: "Track 3",
    trackDuration: "5:07",
    kind: "song",
    currency: "USD",
    price: 1.29
}, {
    trackNumber: "04",
    trackName: "Track 4",
    trackDuration: "0:16",
    kind: "song",
    currency: "USD",
    price: 1.29
}, {
    trackNumber: "05",
    trackName: "Track 5",
    trackDuration: "5:35",
    kind: "song",
    currency: "USD",
    price: 1.29
}];

最佳答案

遍历数组并从每个对象中保留你想要的内容。

var keep = ['trackName', 'kind', 'price'];

for(var i = 0;i < tracks.length; i++){

    for(var key in tracks[i]){
        if(keep.indexOf(key) === -1)delete tracks[i][key];
    }

}

关于javascript - 从对象中动态删除多个键/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634531/

相关文章:

json - 如何使用数据工厂将 JSON 数据从 REST API 映射到 Azure SQL

javascript - JavaScript : How to ammend a datetime variable to set a specific time?

javascript - 使用 ESC 键 HTML 提交表单

c - uint8 srcBuf[] 和 uint8 * srcBuf

c - 使用多个小数组代替大数组

json - json解析器和编码器应该如何处理转义的unicode?

javascript - Sencha touch - 是否可以在客户端存储大型数据库

javascript - jAlert 和 jConfirm 无法正常工作

c - 检查是否所有字母都出现在文件中且没有重复

json - 如何对 SwiftyJSON JSON 对象进行子集化