簡體   English   中英

將對象添加到Java列表中

[英]Adding Objects to List in Javascript

我得到以下數據:

參考文獻列表:

[{
    name: "dog", present: false
}, {
    name: "cat", present: true
}, {
    name: "bird", present: false
}]

給定列表:

["dog, cat"]

想要的結果:

[{
    name: "dog", present: true
}, {
    name: "cat", present: true
}, {
    name: "bird", present: false
}]

現在,我可以通過創建3個條件語句並執行indexOf來生成Wanted Result。 但是,我想知道是否有一種方法可以通過lodash之類的東西在1行中完成全部操作。

那是你需要的嗎?

let reference = [{name:"dog", present:false}, {name:"cat", present:true}, {name:"bird", present:false }];
let list = ['dog', 'cat'];

let result = reference.map(item => ({
  name: item.name,
  present: list.indexOf(item.name) !== -1
}));

console.log(result);

從邏輯.map ,它只是使用.map函數來完成您編寫的操作。

使用Array.prototype.forEach()Array.prototype.indexOf()函數的最短解決方案:

 var data = [{ name: "dog", present: false }, { name: "cat", present: true }, { name: "bird", present: false }], f = ["dog", "cat"]; data.forEach(function (o) { o.present = (f.indexOf(o.name) !== -1); }); console.log(data); 

您可以使用Array.map()

 var reflist = [{ name: "dog", present: false }, { name: "cat", present: true }, { name: "bird", present: false }]; var givenList = ["dog", "cat"]; reflist = reflist.map(function(elem){ if(givenList.indexOf(elem.name) !== -1) elem.present = true; return elem; }); console.log(reflist); 

只是另一種方式。

 var fields = [{ name: "dog", present: false }, { name: "cat", present: true }, { name: "bird", present: false }]; console.log(fields); ['dog', 'cat'].forEach(function (value) { fields.forEach(function (k) { if (k.name === value) { k.present = true; } }); }); console.log(fields); 

您需要循環引用數據的項目,將每個項目與給定的項目集進行比較,並構建一個新的對象數組。

var wantedResult = [];
var keys = Object.keys(refData);
for(var i=0; i<keys.length; i++) {
    wantedResult.push({
        name:refData[keys[i]].name,         
        present:givenList.indexOf(refData[keys[i]].name) != -1
    });
}

這是您的一線客:

referenceList.map((e) => { e.present = givenList.indexOf(e.name) > -1;})

請注意,您將修改referenceList ,此行的返回值對您沒有用。 這只是undefined的列表

參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM