如何在 JavaScript 中将具有多个名称/值对的 JSON 字符串数组保存在单独的数组中

How to save JSON string array with multiple name/value pair in separate arrays in JavaScript

本文关键字:数组 单独 JSON 字符串 存在 保存 JavaScript      更新时间:2023-09-26

我有以下JSON字符串。

[ { "id" : "1", "name" : "name1" },
{ "id" : "2", "name" : "name2" },
{ "id" : "3", "name" : "name3" },
{ "id" : "4", "name" : "name4" },
{ "id" : "5", "name" : "name5" } ]

如何将其保存在 2 个单独的"id & "name"数组中,其中 id 和 name 数组具有与特定索引上的原始数组相同的数据。

var data = [ { "id" : "1", "name" : "name1" },
{ "id" : "2", "name" : "name2" },
{ "id" : "3", "name" : "name3" },
{ "id" : "4", "name" : "name4" },
{ "id" : "5", "name" : "name5" } ];
var ids = data.map(function(obj){
      return obj.id;
});
var names = data.map(function(obj){
      return obj.name;
});

使用地图功能

我不完全理解你的问题,但这段代码可能是确定你的目标的良好开端。

forEach功能可以轻松实现这一点

var ids = [];
var names = [];
data.forEach(function(obj) {
 ids.push(obj.id);
 names.push(obj.name);
});

如果您也想使用map功能

var ids = data.map(function(obj){
  return obj.id;
});
var names = data.map(function(obj){
  return obj.name;
});

但是,如果您的目标是交叉兼容性。使用正常的for循环。

var ids = [];
var names = [];
for (var i in data) {
 ids.push(data[i].id);
 names.push(data[i].name);
}

输出

["1", "2", "3", "4", "5"] // ids
["name1", "name2", "name3", "name4", "name5"] // names

这是一个通用的处理,可以动态处理 n 个元素。

var arr = [{
  "id": "1",
  "name": "name1"
}, {
  "id": "2",
  "name": "name2"
}, {
  "id": "3",
  "name": "name3"
}, {
  "id": "4",
  "name": "name4"
}, {
  "id": "5",
  "name": "name5"
}];
// key is an optional parameter.
// if key is sent only the array having that key is returned.
// else the entire structure is returned.
function processData(arr, key) {
    var obj = {},
      i,
      prop,
      len = arr.length;
    for (i = 0; i < len; i += 1) {
      elem = arr[i];
      for (prop in elem) {
        if (!obj[prop]) {
          obj[prop] = [];
        }
        obj[prop].push(elem[prop]);
      }
    }
    if (key) {
      return obj[key];
    }
    return obj;
  }
  // this logs the array containing "id" only.
console.log(processData(arr, "id"));
// this consoles the entire structure.
//console.log(processData(arr));

var data = [ { "id" : "1", "name" : "name1" }, { "id" : "2", "name" : "name2" }, { "id" : "3", "name" : "name3" }, { "id" : "4", "name" : "name4" }, { "id" : "5", "name" : "name5" } ];
var result = {
  name: [],
  id: []
};
data.forEach(d => {
  result.name.push(d.name);
  result.id.push(d.id);
});
console.log(result);