访问json数组值

时间:2018-10-06 05:07:00

标签: javascript arrays json

我已经创建了这样的json数组

package main

import (
    "fmt"
    "math/big"
    "crypto/rand"
)

func main() {
    var prime1, _ = new(big.Int).SetString("21888242871839275222246405745257275088548364400416034343698204186575808495617", 10)
    // Generate random numbers in range [0..prime1]
    // Ignore error values
    // Don't use this code to generate secret keys that protect important stuff!
    x, _ := rand.Int(rand.Reader, prime1)
    y, _ := rand.Int(rand.Reader, prime1)
    fmt.Printf("x: %v\n", x)
    fmt.Printf("y: %v\n", y)

}

我想以表格格式列出此数据而不使用键名。 我尝试过,

data = [{ product_id: 1, manufacturer: 'man1', product: 'test1' },
        { product_id: 2, manufacturer: 'man2', product: 'test2' }]

工作正常。但是我想显示值而不指定键名,例如for(i=0; i<data.length;i++){ console.log(data[i].product_id+","+data[i].product+","+data[i].manufacturer); } .product_id等。是否可以在javascript中使用?您能支持我解决这个问题吗?

3 个答案:

答案 0 :(得分:4)

您可以使用Object.values()获取该对象所有值的迭代器。例如,将它们全部记录到控制台中,并以逗号分隔,而无需指定每个键:

let data = [
  { product_id: 1, manufacturer: 'man1', product: 'test1' },
  { product_id: 2, manufacturer: 'man2', product: 'test2' }
]

for(i=0; i<data.length;i++){
    console.log(Object.values(data[i]).join(','))
}

这将列出对象 own property 的名称,因此它不会遵循原型链(如果这样的话)。

基于注释的编辑(使用padEnd()指定固定宽度):

let data = [
    { product_id: 1, manufacturer: 'man1', product: 'test1' },
    { product_id: 2, manufacturer: 'man2', product: 'test2' }
  ]

let fixedWidth = 7
for(i=0; i<data.length;i++){
    let padded = Object.values(data[i])
    .map(str => String(str).padEnd(fixedWidth, " "))
    .join('')
    console.log(padded)
 }

答案 1 :(得分:0)

您可以使用for in语句遍历对象,如下所示:

data = [{ product_id: 1, manufacturer: 'man1', product: 'test1' },
        { product_id: 2, manufacturer: 'man2', product: 'test2' }]
for(object of data){
  for(key in object){
    console.log(object[key])
  }
}

答案 2 :(得分:0)

您还可以执行以下操作:

var data = [{ product_id: 1, manufacturer: 'man1', product: 'test1' }, { product_id: 2, manufacturer: 'man2', product: 'test2' } ]

const log = (padLength) => data.forEach(x => console.log(Object.values(x).join(' '.repeat(padLength))))

log(2)
log(5)

使用forEach,因为数据已经是一个数组,并且使用Object.values来获取数组中的值,然后是一个join,它使用padLength参数重复空白数