2017-04-24 79 views
0

一个另一阵列的条件我有对象的下面遍历对象的列表上的jquery

列表中的newlist也是动态的和SELECTID阵列也是动态

我填充thorugh功能,现在我要iteratte并创建新的列表

var newList = 
    [ 
    { id : 1,name="tea",plant:"darjeeling"}, 
    { id : 2,name="coffee",plant:"manipur"}, 
    { id : 3,name="milk",plant:"nilgiri"}, 
    { id : 4,name="tea",plant:"assam"} 
    ] 

具有共同

var selectedID = [2,3]; 
ID anaother阵列

现在我要遍历对象的列表和更新的对象列表作为 无论ID为2和3的植物应该是“蒙纳”

所以如何创建对象的“newlist”新列表如下图所示

var newList = 
[ 
{ id : 1,name="tea",plant:"darjeeling"}, 
{ id : 2,name="coffee",plant:"munnar"}, 
{ id : 3,name="milk",plant:"munnar"}, 
{ id : 4,name="tea",plant:"assam"} 
] 
+3

以及您的特殊问题在哪里? –

+3

op没有问过任何问题。 –

+2

@Kinduser,rereaded,没有发现问题o_O –

回答

1

我假设你是在JavaScript这样做,所以首先我要指出你应该有像这样定义的newList

var newList = 
    [ 
    { id : 1,name:"tea",plant:"darjeeling"}, 
    { id : 2,name:"coffee",plant:"manipur"}, 
    { id : 3,name:"milk",plant:"nilgiri"}, 
    { id : 4,name:"tea",plant:"assam"} 
    ] 

name =“tea”将不起作用。

但是在你的问题上,你会想要使用selectedID数组值来更新你现有的newList。

var newList = 
    [ 
    { id : 1,name:"tea",plant:"darjeeling"}, 
    { id : 2,name:"coffee",plant:"manipur"}, 
    { id : 3,name:"milk",plant:"nilgiri"}, 
    { id : 4,name:"tea",plant:"assam"} 
    ] 

var selectedID =[2,3] 

for(i=0;i<newList.length;i++){ 
    for(j=0;j < selectedID.length;j++){ 
     if(newList[i].id==selectedID[j]) 
     newList[i].plant = "munnar"; 
    } 
} 

console.log(newList); 
+0

会根据索引而不是基于'id'值更改'newList'。 –

+0

你是对的,这就是我匆忙编码 –

+0

不能改变新列表,只需要改变值,无论它在哪里找到ID – tripathy

1

您可以迭代想要的ID进行更改,找到对象并更改值。

使用:

var newList = [{ id: 1, name: "tea", plant: "darjeeling" }, { id: 2, name: "coffee", plant: "manipur" }, { id: 3, name: "milk", plant: "nilgiri" }, { id: 4, name: "tea", plant: "assam" }], 
 
    selectedID = [2, 3]; 
 

 
selectedID.forEach(id => (newList.find(a => a.id === id) || {}).plant = 'munnar'); 
 

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

+0

不知道为什么它不在视觉工作室js文件工作 – tripathy

+0

@tripathy,它是ES6风格。但更好的问题是'newList'中有多少数据,''selectedID'中有多少个索引?内容多久改变一次?索引是否被排序? –

+0

指数不会被排序,它们只是来自另一个函数的值。 SeletedID可以包含很多,也可以包含很多对象。但是SelectedID将包含小于或等于列表中的对象数量,肯定 – tripathy

0

据我了解,你想处理原始数组与基于选择的一组ID不同的值。如果那些可能来自用户界面的选定ID与您的工厂阵列中的任何ID匹配,则将名称更改为Munnar?如果我理解正确的话,我相信下面应该为你工作

var newList = [{ 
    id: 1, 
    name: "tea", 
    plant: "darjeeling" 
}, { 
    id: 2, 
    name: "coffee", 
    plant: "manipur" 
}, { 
    id: 3, 
    name: "milk", 
    plant: "nilgiri" 
}, { 
    id: 4, 
    name: "tea", 
    plant: "assam" 
}] 

function munnar(selectedID) { 
    newList.forEach((item) => { 
    selectedID.forEach((id) => { 
     if(item.id === id) { 
     item.plant = 'Munnar' 
     } 
    }) 
    }) 
} 

munnar([2, 3]) 

这将返回

[{ 
    id: 1, 
    name: "tea", 
    plant: "darjeeling" 
}, { 
    id: 2, 
    name: "coffee", 
    plant: "Munnar" 
}, { 
    id: 3, 
    name: "milk", 
    plant: "Munnar" 
}, { 
    id: 4, 
    name: "tea", 
    plant: "assam" 
}]