如果我有这样的数组:
var maskedlist = [
{id:-1,name:'*****选'},
{id:0,name:'*****(3天)'},
{id:1,name:'*****'},
{id:3,name:'*****'},
{id:2,name:'*****列'},
{id:4,name:'*****系列'},
{id:5,name:'*****系列'},
{id:6,name:'*****系列'},
{id:7,name:'*****系列'},
{id:8,name:'*****'},
{id:9,name:'*****系列'},
{id:10,name:'*****铺系列'},
{id:12,name:'*****列'},
{id:11,name:'*****系列'},
{id:13,name:'*****系列'},
{id:14,name:'*****'},
{id:15,name:'*****列'},
{id:100,name:'*****部测试号'},
{id:200,name:'*****厅体验版'},
{id:201,name:'*****'},
{id:202,name:'*****单店系列'},
{id:203,name:'*****多店系列'},
{id:16,name:'*****系列'},
{id:17,name:'*****系列'},
{id:204,name:'*****代运营套餐'},
{id:205,name:'*****活动运营'},
{id:206,name:'*****内容运营'},
{id:207,name:'*****商户运营'},
{id:208,name:'*****外卖系列'}
]我将有一个变量incoming_id,它可能匹配obj的一个子id的值,假设它是205。
因此,在以下新的obj中:
var entity = {
selected: maskedlist[index]
} 现在我怎么才能从index那里得到incoming_id
显然,我可以像这样使用for循环:
for (i = 0; i < maskedlist.length; i++) {
maskedlist[i].id == incoming_id && index = i
}感觉不太优雅,如果我有一个足够长的列表,它可能会非常慢,并且可能会时不时地使浏览器崩溃。
发布于 2017-08-25 08:25:52
若要在数组中查找索引,可以使用Array.prototype.findIndex()。
但是,根据您的问题,最好使用Array.prototype.find()获取数组maskedlist中的对象,属性id等于205。
查找index和entity的代码示例
var maskedlist = [{id: -1,name: '*****选'},{id: 0,name: '*****(3天)'},{id: 1,name: '*****'},{id: 3,name: '*****'},{id: 2,name: '*****列'},{id: 4,name: '*****系列'},{id: 5,name: '*****系列'},{id: 6,name: '*****系列'},{id: 7,name: '*****系列'},{id: 8,name: '*****'},{id: 9,name: '*****系列'},{id: 10,name: '*****铺系列'},{id: 12,name: '*****列'},{id: 11,name: '*****系列'},{id: 13,name: '*****系列'},{id: 14,name: '*****'},{id: 15,name: '*****列'},{id: 100,name: '*****部测试号'},{id: 200,name: '*****厅体验版'},{id: 201,name: '*****'},{id: 202,name: '*****单店系列'},{id: 203,name: '*****多店系列'},{id: 16,name: '*****系列'},{id: 17,name: '*****系列'},{id: 204,name: '*****代运营套餐'},{id: 205,name: '*****活动运营'},{id: 206,name: '*****内容运营'},{id: 207,name: '*****商户运营'},{id: 208,name: '*****外卖系列'}],
index = maskedlist.findIndex(obj => obj.id === 205),
entity = {
selected: maskedlist.find(obj => obj.id === 205)
};
console.log('index:', index);
console.log('entity:', entity);
发布于 2017-08-25 08:27:36
你能试试这个吗?
let index='';
maskedlist.some(function(o){if( o["key1"] === "value2"){index =
maskedlist.indexOf(o["key1"]) }})如果找到对,则为true,否则为false。
这假设每个对象只包含一个键/值对,并且该值从未未定义过。
发布于 2017-08-25 08:27:43
var maskedlist = [
{id:-1,name:'*****选'},
{id:0,name:'*****(3天)'},
{id:1,name:'*****'},
{id:3,name:'*****'},
{id:2,name:'*****列'},
{id:4,name:'*****系列'},
{id:5,name:'*****系列'},
{id:6,name:'*****系列'},
{id:7,name:'*****系列'},
{id:8,name:'*****'},
{id:9,name:'*****系列'},
{id:10,name:'*****铺系列'},
{id:12,name:'*****列'},
{id:11,name:'*****系列'},
{id:13,name:'*****系列'},
{id:14,name:'*****'},
{id:15,name:'*****列'},
{id:100,name:'*****部测试号'},
{id:200,name:'*****厅体验版'},
{id:201,name:'*****'},
{id:202,name:'*****单店系列'},
{id:203,name:'*****多店系列'},
{id:16,name:'*****系列'},
{id:17,name:'*****系列'},
{id:204,name:'*****代运营套餐'},
{id:205,name:'*****活动运营'},
{id:206,name:'*****内容运营'},
{id:207,name:'*****商户运营'},
{id:208,name:'*****外卖系列'}
]
var entity = {}
entity.selected = maskedlist.find(item => item.id === 205)
console.log(entity)
https://stackoverflow.com/questions/45877190
复制相似问题