0

这行得通,但问题是我可以一次性保存naziv.valuevar naziv里面,find method这样我就不必声明另一个变量了吗?

var naziv = obj.find(c => c.name === "naziv");
console.log(naziv.value)

当前的输出是应该testconsole.log(naziv.value),我想只是console.log(naziv)

var obj = [{
    name: "naziv",
    value: "test"
  },
  {
    name: "zzz",
    value: "xxx"
  }
]

var naziv = obj.find(c => c.name === "naziv");
console.log(naziv.value)

编辑:如果名称相同,还可以创建一个数组或值,例如:

var obj = [{
    name: "naziv",
    value: "test"
  },
  {
    name: "zzz",
    value: "xxx"
  },
  {
    name: "Telefon[]",
    value: "tel1"
  }, {
    name: "Telefon[]",
    value: "tel2"
  }
]

var naziv = obj.find(c => c.name === "Telefon[]");
console.log(naziv.value)

应该:[tel1,tel2]

4

3 回答 3

2

您可以使用解构,例如const {value:naziv} = obj.find(c => c.name === "naziv");

于 2020-09-24T16:44:16.127 回答
1

var obj = [{
    name: "naziv",
    value: "test"
  },
  {
    name: "zzz",
    value: "xxx"
  },
  {
    name: "naziv",
    value: "xxx"
  }
]

var naziv = obj.filter(item => item.name === 'naziv').map(item => item.value)
console.log(naziv)

于 2020-09-24T16:46:47.933 回答
1

如果您希望多个值作为一个数组,这可以是其中一种方式

var obj = [{name:"naziv",value:"test"},{name:"zzz",value:"xxx"},{name:"Telefon[]",value:"tel1"},{name:"Telefon[]",value:"tel2"}]

var naziv = obj.filter(c => c.name === "Telefon[]").map(res => res.value);
console.log(naziv)

同样,如果值本身就是预期的输出,并且如果只期望单个值,那么下面是其中一种方法。在这里,我用过Optional Chaining

var obj = [{name:"naziv",value:"test"},{name:"zzz",value:"xxx"},{name:"Telefon[]",value:"tel1"}]

var naziv = obj.find(c => c.name === "Telefon[]")?.value;
console.log(naziv)

如果您需要此代码来运行某些旧版本的浏览器并且不支持,则可能会有机会,Optional Chaining那么下面是另一种方式

var obj = [{name: "naziv",value: "test"},{name: "zzz",value: "xxx"},{name: "Telefon[]",value: "tel1"}]

var naziv = (obj.find(c => c.name === "Telefon[]") || {}).value;
console.log(naziv)

var notFound = (obj.find(c => c.name === "not_found") || {}).value;
console.log(notFound);

于 2020-09-24T16:59:01.093 回答