如何比较两个数组对象
问题描述:
嗨,我有两个数组都取决于共同fq_id如何比较两个数组对象
var array1 =[
{"description":" Virat Kohli","fq_id":156},{"description":" Lokesh Rahul","fq_id":156},{"description":"Chateshwar Pujara","fq_id":156},{"description":"Ajinke Rahane","fq_id":156}]
var array2 = [
{"ans_description":"who is better?","fq_id":156}]
匹配fq_id
结果数组应该如下
result = [{
description:who is better?,
options:["Virat Kohli","Lokesh Rahul","Chateshwar Pujara","Rahane"]
}]
答
你可以以后比较使用Array#map
和Array#filter
作为具有过滤项目的新对象。
简易型
var array1 = [{ description: "Virat Kohli", fq_id: 156 }, { description: "Lokesh Rahul", fq_id: 156 }, { description: "Chateshwar Pujara", fq_id: 156 }, { description: "Ajinke Rahane", fq_id: 156 }],
array2 = [{ ans_description: "who is better?", fq_id: 156 }],
result = array2.map(a => ({
description: a.ans_description,
options: array1.filter(b => a.fq_id === b.fq_id).map(a => a.description)
}));
console.log(result);
版本与Map
var array1 = [{ description: "Virat Kohli", fq_id: 156 }, { description: "Lokesh Rahul", fq_id: 156 }, { description: "Chateshwar Pujara", fq_id: 156 }, { description: "Ajinke Rahane", fq_id: 156 }],
array2 = [{ ans_description: "who is better?", fq_id: 156 }],
map = new Map,
result = array2.map(a => map.set(a.fq_id, {
description: a.ans_description,
options: []
}).get(a.fq_id));
array1.forEach(a => map.has(a.fq_id) && map.get(a.fq_id).options.push(a.description));
console.log(result);
答
var array1 =[
{"description":" Virat Kohli","fq_id":156},{"description":" Lokesh Rahul","fq_id":146},{"description":"Chateshwar Pujara","fq_id":157},{"description":"Ajinke Rahane","fq_id":156}]
var array2 = [
{"ans_description":"who is better?","fq_id":156}]
var result = [{'description':array2[0].ans_description, 'options':[]}]
for(var i = 0; i<array1.length; i++) {
if(array1[i].fq_id === array2[0].fq_id){
result[0].options.push([array1[i].description])
}
}
你有什么尝试? – Rajesh
突出显示该命令+ k缩进您的代码 – 2017-03-27 12:54:45
问题是什么? _“结果数组应该如下”_你是要求我们做你的工作吗? – evolutionxbox