【问题标题】:How do I select single item from array using jQuery?如何使用 jQuery 从数组中选择单个项目?
【发布时间】:2017-05-28 16:02:33
【问题描述】:

我在数组中有 ID 和描述:

var tablica = [{"3":"asdasd asd"},{"19":"asddas fff"},{"111111":"adas asf asdff ff"},{"4":"re"},{"5":"asdasd"},{"6":"we"},{"7":"asdasdgg"},{"9":"asdasdasd"},{"16":"sdads"},{"10":"asdgg"},{"11":"ggg"}];

如何使用 jQuery 或 JavaScript 为 ID 选择单个描述?

【问题讨论】:

  • ID 在哪里?
  • @Satpal 我确定 OP 在{"3":"asdasd asd"} 中的意思是3id
  • 每个数组中的第一个元素(3、19、3、4 等)
  • 修复数据结构后,可能重复:stackoverflow.com/questions/7364150/…
  • @Rajesh 是的,我只是在等待 OP 的确认,然后才以骗子身份关闭。我不知道为什么这被赞成了。我认为发生了一些先令投票

标签: javascript jquery arrays


【解决方案1】:

使用 es6,

var tablica = [{"3":"asdasd asd"},{"19":"asddas fff"},{"3":"adas asf asdff ff"},{"4":"re"},{"5":"asdasd"},{"6":"we"},{"7":"asdasdgg"},{"9":"asdasdasd"},{"16":"sdads"},{"10":"asdgg"},{"11":"ggg"}];

var res =  tablica.filter(x=> x["3"])
console.log(res);

【讨论】:

  • 首先,请不要重复回答。其次,当x["3"] 的值为假时,您的解决方案将失败。
  • @Rajesh OP 说“我在数组中有 ID 和描述”,所以价值描述很清楚,所以我可以假设描述中会有非常非常罕见的错误机会。其次,如果你真的认为它是重复的,那么请用重复的问题标记这个问题,它是重复的,你没有清楚。
  • @Rajesh 我对你的评论有同样的感觉,如果有任何重复,请告诉我。问题,我给你标记一下
【解决方案2】:

虽然您在对象中有重复的键,但我建议使用Array#filter 并稍后使用您需要的对象信息。

var data = [{ 3: "asdasd asd" }, { 19: "asddas fff" }, { 3: "adas asf asdff ff" }, { 4: "re" }, { 5: "asdasd" }, { 6: "we" }, { 7: "asdasdgg" }, { 9: "asdasdasd" }, { 16: "sdads" }, { 10: "asdgg" }, { 11: "ggg" }],
    key = 3,
    result = data.filter(function (o) {
        return key in o;
    });

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

  • 请不要回答重复。我知道它不完全重复,但如果 OP 考虑将3 作为 ID,最好建议使用更好的数据结构 {'id': 3, value:...},然后它就会完全重复。
【解决方案3】:

我认为最好的方法是将此数组转换为描述键为 ID 的对象。这消除了每次您想要查找描述时搜索的需要。只有在您准备好对象之后,您才能简单快速地访问描述。

例如:

var tablica = [{"3":"asdasd asd"},{"19":"asddas fff"},{"3":"adas asf asdff ff"},{"4":"re"},{"5":"asdasd"},{"6":"we"},{"7":"asdasdgg"},{"9":"asdasdasd"},{"16":"sdads"},{"10":"asdgg"},{"11":"ggg"}];
var obj = {};
tablica.forEach(function(el){
  var id = Object.keys(el)[0];
  obj[id] = el[id];
});

console.log(obj['5']);

现在,如果您想获取 ID = 5 的描述,您可以轻松访问它obj['5']

【讨论】:

  • 请注意,您不应该重复回答。
  • 请根据问题或 Nina 的回答参考 cmets
  • 我们不要争论它。还请形成更好的句子,因为不理解您之前的评论。这是关于我对她的回答的评论,而不是关于她的回答。最后,您的解决方案将在最后一次出现的对象而不是所有值中给出值。
【解决方案4】:

$("button").eq(0).click(function() {
  $("h1").addClass("big-title");

})
.big-title {
  font-size: 3rem;
  color: yellow;
  font-family: cursive;
}
<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title>jQuery</title>
  <link rel="stylesheet" href="styles.css">

</head>

<body>
  <h1>Hello my people</h1>
  <button type="button" name="button">Click Me</button>
  <button type="button" name="button">Click Me</button>
  <button type="button" name="button">Click Me</button>
  <button type="button" name="button">Click Me</button>
  <button type="button" name="button">Click Me</button>
  <p>Click the first button</p>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  <script src="index.js" charset="utf-8"></script>
</body>

</html>

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案5】:

嗯,这有点复杂,因为你有一个对象数组

您可以解析整个数组,并为其中的每个对象检查它是否具有所需的键:

var tablica = [{"3":"asdasd asd"},{"19":"asddas fff"},{"3":"adas asf asdff ff"},{"4":"re"},{"5":"asdasd"},{"6":"we"},{"7":"asdasdgg"},{"9":"asdasdasd"},{"16":"sdads"},{"10":"asdgg"},{"11":"ggg"}];

var wantedId = "3"; // the ID you actually search
var wantedObj;

tablica.map(function(obj) {
    if (wantedId in obj) {
        wantedObj = obj;
    }
});

console.log(wantedObj);

无论如何,你应该修复你的数据结构:你的数组的每个对象都应该有一个属性id和一个属性value(或类似的东西)

var tablica = [
    {
        id: "3",
        value: "asdasd asd"
    },
    {
        id: "19",
        value: "asddas fff"
    }
];

【讨论】:

  • 首先,使用.map 而不使用return 只是在浪费一个功能。其次,我宁愿使用filterfind,因为搜索是它们的用途。第三,您不应回答重复的问题。
猜你喜欢
  • 2023-01-09
  • 2021-06-23
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 2010-12-24
  • 2013-03-22
相关资源
最近更新 更多