首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过搜索数组中的值从2d数组访问值

通过搜索数组中的值从2d数组访问值
EN

Stack Overflow用户
提问于 2020-10-17 07:45:46
回答 5查看 68关注 0票数 1

我有一个名为MyUsernames的2d数组。

如果我写console.log(MyUsernames),我会看到以下内容:

代码语言:javascript
复制
0: {id: "5", name: "quirky.subdued"}
1: {id: "6", name: "phyllida.skeg"}
2: {id: "7", name: "duff.anarchist"}
3: {id: "9", name: "relashio.articulate"}

我正在尝试访问数组中元素的name部分。

我通过这个循环输出MyUsernames中的记录:

代码语言:javascript
复制
var hst = document.getElementById("usernames");

for (var i = 0; i < MyUsernames.length; i++) {  
    var un1 = MyUsernames[i].name;
    hst.innerHTML += "<li>" +"<a id="+MyUsernames[i].id + " href='#content' onclick='deleteById(this)'>" + un1 + "</a></li>";
}

这是代码的deleteById位:

代码语言:javascript
复制
var deleteById = function ( self ){

    this_id = self.id;
    this_word = MyUsernames[this_id].name;

}

我的问题是,我正在发送例如9的ID值来提取名称relashio.articulate

但是,我试图通过以下代码来访问该代码:

代码语言:javascript
复制
this_word = MyUsernames[this_id].name;

这不起作用,因为根据控制台输出,在我的示例中我想要的位是通过以下方式进行访问:

代码语言:javascript
复制
MyUsernames[3].name;

而不是:

代码语言:javascript
复制
MyUsernames[9].name;

问题是我不能发送ID值为3,因为我只有来自MyUsernames的记录的ID值,即9。

是否有一种方法可以通过数组的相应ID访问数组的“名称”部分?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-10-17 08:11:30

我想你是在找Array.prototype.find。您可以在函数中提供一组条件,如果条件匹配,find将返回一个结果。

你就这样用它

代码语言:javascript
复制
var usernames = [];
usernames.push({id: "5", name: "quirky.subdued"});
usernames.push({id: "6", name: "phyllida.skeg"});
usernames.push({id: "7", name: "duff.anarchist"});
usernames.push({id: "9", name: "relashio.articulate"});

function findUsername(id) {
    var username = usernames.find(function(username) { return username.id === id });
    return username;
}

var user5 = findUsername("5");
document.write('Find result 1: ' + user5.name);

document.write('<br />');

var user9 = findUsername("9");
document.write('Find result 2: ' + user9.name);

这里我的JsFiddle:https://jsfiddle.net/rtL87veq/11/

票数 2
EN

Stack Overflow用户

发布于 2020-10-17 08:10:35

将数组转换为对象

通过实现用户Id作为新对象变量的主键,您将能够通过users[9].name找到用户

输出:

代码语言:javascript
复制
relashio.articulate

定义新的对象变量并执行for循环,确保将用户id标记为主键。然后,用相同的键保存其余的对象数据。例如:

代码语言:javascript
复制
var users = {};

        // for loop all your users in 'array'
        for (var i = 0; i < MyUsernames.length; i++) {

        // hold found user in variable
            var user = MyUsernames[i];

        // mark user id as the primary key then save rest of object data in same key
            users[user.id] = user;
        };

源代码

代码语言:javascript
复制
var MyUsernames = [{
  id: "5",
  name: "quirky.subdued"
}, {
  id: "6",
  name: "phyllida.skeg"
}, {
  id: "7",
  name: "duff.anarchist"
}, {
  id: "9",
  name: "relashio.articulate"
}];
    
    // define object variable
        var users = {};
        // for loop all your users in 'array'
        for (var i = 0; i < MyUsernames.length; i++) {
        // hold found user in variable
            var user = MyUsernames[i];
        // mark user id as the key then save rest of object data in same key
            users[user.id] = user;
        };
        
        // Print the value of key 'name' for user id '9'
        console.log(users[9].name)

票数 1
EN

Stack Overflow用户

发布于 2020-10-17 08:00:41

Array.find O(n)是一个选项,通过内部道具搜索数组。

代码语言:javascript
复制
const usernames = [{
  id: "5",
  name: "quirky.subdued"
}, {
  id: "6",
  name: "phyllida.skeg"
}, {
  id: "7",
  name: "duff.anarchist"
}, {
  id: "9",
  name: "relashio.articulate"
}]


const target = usernames.find(({ id }) => id === "9")

console.log(target)

Internet Explorer中不支持它。如果目标浏览器是Array.filter,请考虑使用IE9+

代码语言:javascript
复制
const usernames = [{
  id: "5",
  name: "quirky.subdued"
}, {
  id: "6",
  name: "phyllida.skeg"
}, {
  id: "7",
  name: "duff.anarchist"
}, {
  id: "9",
  name: "relashio.articulate"
}]


const [target] = usernames.filter(({ id }) => id === "9")
// Filter returns an array of matches. Destructing helps to get the first match 

console.log(target)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64400144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档