【问题标题】:How to get an object out of an array without knowing its index, only 'key' name如何在不知道其索引的情况下从数组中取出对象,只知道“键”名称
【发布时间】:2021-08-12 19:28:15
【问题描述】:

有 2 个数组(一个是数字,另一个是对象),
如何获取特定对象的-(size) 值(在其他函数中)不知道它在数组中的索引(和它的值)只知道它的键
用最短和最快的方式所以我可以使用那个值数

如果除此特定对象之外的数组为空,则size 属性值将为 - 0;

如果我的问题不清楚,请发表评论,我会解决它并使其变得更好。

let firstArray = [ 1, 2 , 10, 23, {size: 890}];
     
   funcExtract(firstArray);
    
   function funcExtract(arr){
        
    // arr ? How to find the object when knowing only its key
    }

对象数组

let secondArray  = [ {a:2}, {b:4 },{size: 700}, {c:5} ];
 
      funcExtract(secondArray); 

      function funcExtract(arr){
        
      }

【问题讨论】:

  • 请从帖子标签中删除reactjs。这与您的要求无关。
  • 你的第一个数组有数字一个有size属性的对象。您正在寻找的“特定对象”是什么?你能举一些例子吗?
  • 但是什么特定对象?你的“钥匙”是什么?
  • {size: 890} 在这种情况下,key 是“大小”,value 是 890

标签: javascript arrays object


【解决方案1】:

你可以使用Array#find函数:

const test = [1, 2, 3, 4, {key: 5}]
const findOne = test.find(item => item.hasOwnProperty("key"))
console.log(findOne)

【讨论】:

  • 我的意思是我不需要知道密钥的值。重要
  • 那么只知道它的键是什么意思?更新答案,看看
【解决方案2】:

您可以这样做:

let key = "size"
let secondArray  = [ {a:2}, {b:4 },{size: 700}, {c:5} ];
let firstArray = [ 1, 2 , 10, 23, {size: 890}];
function funcExtract(arr,key){
   let filter = arr.filter((x)=> typeof x === "object" && x.hasOwnProperty(key))
   console.log(filter[0].size)
}
funcExtract(firstArray,key);
funcExtract(secondArray,key); 

【讨论】:

  • 是的,你的方法可行,但我发现这里可以更好地使用find 方法,它是一种更短的方法。谢谢
【解决方案3】:
let secondArray  = [ {a:2}, {b:4 },{size: 700}, {c:5} ];
secondArray.find(o => o.size) // {size: 700}
a.filter(o => o.size) // good if you need to find more than 1 with same key

【讨论】:

  • 如果o.size0(即falsey)怎么办?
  • 好吧,大概 OP 可以添加自己的保护措施,认为这超出了问题的范围
  • @RedBaron 我更新了我的问题,关于 size = 0
  • 我不确定我是否理解新问题。我的回答不起作用吗?如果没有,哪个部分不起作用?
  • @RedBaron {size: 0} 时将是 > undefined。比我会用find(o => o.hasOwnProperty("size"));谢谢
猜你喜欢
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 2017-03-26
  • 2015-08-12
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多