从JSON数组JavaScript获取元素

时间:2019-03-25 08:42:33

标签: javascript arrays json object

我有一个简单的Json字符串

<script type="text/javascript">
    $(document).ready(function() {
    $('#summernote').summernote({
          height: 250,
          disableResizeEditor: true // This is optional if you want to remove resize
     });
  });
</script>

我想通过Javascript在ValueInput的Data中获取字段名称。

请帮助我!

7 个答案:

答案 0 :(得分:4)

您需要遍历数组,然后解析字符串化的JSON,以便可以访问data数组。然后,只需循环data数组即可获取每个name属性的值。

var arr = [{
  "assetName": "LCT",
  "assetValue": "",
  "typeValueInput": "select",
  "valueInputSelect": null,
  "required": true,
  "valueInput": "{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
}];

arr.forEach((arrObj) => {
  var jsonData = JSON.parse(arrObj.valueInput);
  jsonData.data.forEach(({name}) => console.log(name));
});

答案 1 :(得分:1)

您可以使用JSON.parse

var jsonArray = [
  {
    assetName: 'LCT',
    assetValue: '',
    typeValueInput: 'select',
    valueInputSelect: null,
    required: true,
    valueInput:
      '{"data":[{"name":"name1","id":"12"},{"name":"name2","id":"13"},{"name":"name3","id":"14"}]}'
  }
];

let name = jsonArray[0].valueInput;
name = JSON.parse(name);
name.data.forEach(value => {
  console.log(value.name, value.id);
});

答案 2 :(得分:0)

您可以使用JSON.parse

JSON.parse(o[0].valueInput).data[0].name

var o = [
   {
      "assetName":"LCT",
      "assetValue":"",
      "typeValueInput":"select",
      "valueInputSelect":null,
      "required":true,
      "valueInput":"{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
   }
]

console.log(JSON.parse(o[0].valueInput).data[0].name);

// To get all, use a loop

var arrO = JSON.parse(o[0].valueInput).data;

arrO.forEach((obj) => console.log(obj.name))

答案 3 :(得分:0)

使用JSON.parse,然后使用map

const data = [{
  "assetName": "LCT",
  "assetValue": "",
  "typeValueInput": "select",
  "valueInputSelect": null,
  "required": true,
  "valueInput": "{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
}]
const names = JSON.parse(data[0].valueInput).data.map(({ name }) => name);
console.log(names);

答案 4 :(得分:0)

您可以这样做:

const arr = [{"assetName": "LCT","assetValue": "","typeValueInput": "select","valueInputSelect": null,"required": true,"valueInput": "{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"}];

arr.forEach(o => JSON.parse(o.valueInput).data.forEach(({id, name}) => console.log(id, name)));

答案 5 :(得分:0)

您可以使用array变量和JSON.parse的回调函数来获取名称keyval

let dt = [{
  "assetName": "LCT",
  "assetValue": "",
  "typeValueInput": "select",
  "valueInputSelect": null,
  "required": true,
  "valueInput": "{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
}];
let nameArray = [];

let dlt = JSON.parse(dt[0].valueInput, function(key, val) {
  if (key === 'name') {
    nameArray.push(val);
  }
})

console.log(nameArray)

答案 6 :(得分:0)

这是一种方法。

let originalData = [
   {
      "assetName":"LCT",
      "assetValue":"",
      "typeValueInput":"select",
      "valueInputSelect":null,
      "required":true,
      "valueInput":"{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
   }
];

let valueInput = JSON.parse(originalData[0].valueInput);

let data = valueInput.data;

console.log(data);

for (var i = 0; i < data.length; i++){
    console.log(data[i].name);
}

请参见jsfiddle https://jsfiddle.net/3s1na4eL/3/

让我知道是否有任何问题。